windows下静态编译pthread
1. Building the library as a statically linkable library
-----------------------------------------------------
General: PTW32_STATIC_LIB must be defined for both the library build and the
application build. The makefiles supplied and used by the following 'make'
command lines will define this for you.
MSVC (creates pthreadVCn.lib as a static link lib):
nmake clean VC-static
MinGW32 (creates libpthreadGCn.a as a static link lib):
make clean GC-static
Define PTW32_STATIC_LIB when building your application. Also, your
application must call a two non-portable routines to initialise the
some state on startup and cleanup before exit. One other routine needs
to be called to cleanup after any Win32 threads have called POSIX API
routines. See README.NONPORTABLE or the html reference manual pages for
details on these routines:
BOOL pthread_win32_process_attach_np (void);
BOOL pthread_win32_process_detach_np (void);
BOOL pthread_win32_thread_attach_np (void); // Currently a no-op
BOOL pthread_win32_thread_detach_np (void);
The tests makefiles have the same targets but only check that the
static library is statically linkable. They don't run the full
testsuite. To run the full testsuite, build the dlls and run the
dll test targets.
=============================================
2. 使用pthread-win32静态库
	使用pthread-win32静态库要注意:
	1) 在程序中要定义宏PTW32_STATIC_LIB
	2) pthread-win32静态库中没有做attach和detach操作,要程序员来完成该任务,
	否则线程有能成功创建。具体如下:
	在程序入口(通常是main函数)处调用如下两个函数
	pthread_win32_process_attach_np(); 
    pthread_win32_thread_attach_np();
    程序结束时调用
    pthread_win32_thread_detach_np(); 
    pthread_win32_process_detach_np();
没办法,windows系统有很多标准它都不支持,写起来就要麻烦点。
	可以简单地这样处理:
a) 定义程序结束时的处理函数
	#ifdef PTW32_STATIC_LIB
	void pthread_win32_detach(void)
	{
		pthread_win32_thread_detach_np();
		pthread_win32_process_detach_np();
	}
	#endif
b) 在程序入口处调用如下
	#ifdef PTW32_STATIC_LIB
		pthread_win32_process_attach_np();
		pthread_win32_thread_attach_np();
		atexit(pthread_win32_detach);
	#endif
windows下静态编译pthread的更多相关文章
- Qt5.5.0在Windows下静态编译(修改参数以后才能支持XP)good
		测试系统环境: windows 7 编译软件环境: vs2013 + QT5.5.0 [源码地址:http://download.qt.io/official_releases/qt/5.5/5.5. ... 
- Windows下静态编译Qt4
		既然是静态编译,那就要编译出来的程序不信赖于任何dll文件.首先下载qt-win-opensource-4.7.4-mingw.exe: http://get.qt.nokia.com/qt/sour ... 
- 原创 C++应用程序在Windows下的编译、链接:第一部分 概述
		本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 cl.exe是windows平台下的编译器,link.ex ... 
- C++应用程序在Windows下的编译、链接(一)概述
		C++应用程序在Windows下的编译.链接(一)概述 本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 c ... 
- Windows下静态库与动态库的创建与使用
		Windows下静态库与动态库的创建与使用 学习内容:本博客介绍了Windows下使用Visual C++ 6.0制作与使用静态库与动态库的方法. --------CONTENTS-------- 一 ... 
- windows下rabbitmq-c编译(带openssl、无需MinGW)
		因为项目原因,需要使用到rabbitmq的c客户端库.首先,参见上一篇windows下openssl编译,如果已经使用cmake编译过了,则先delete cache(File-Delete Cach ... 
- 【FFmpeg】Windows下FFmpeg编译
		由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类 ... 
- ACE在windows下的编译及配置(VS2010)
		ACE在windows下的编译及配置(VS2010) 分类: -[小西南]- 2013-08-06 16:17 2354人阅读 评论( ... 
- [转]QGis2.9在windows下的编译以及二次开发包下载
		今天心血来潮,将QGis在github上的代码更新后,又编译了一下.留意到源代码包里面的INSTALL文件有更新,于是本次编译完全基于官方的编译说明.编译过程非常顺利,除了在CMake的第一次conf ... 
随机推荐
- android随机运算器开发小结1
			想到第一天自己写了一个简单的四则运算程序的情景:我便想起了引起我们不断迭代开发的程序背景是:二柱子接受老师安排的给孩子出题的任务,每次需要给孩子设置出题任务,生成相应的小学运算题目,所以我们面对的需求 ... 
- java 面试 -- 4
			Java面试知识点总结 本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺(阅读本文需要有 ... 
- 超实用 1 ArrayList 链表
			package ArrayList链表; import java.util.*; public class kk1 { /** * 作者:Mr.Fan * 功能:记住ArrayList链表 */ pu ... 
- grunt入门讲解3:实例讲解使用 Gruntfile 配置任务
			这个Gruntfile 实例使用到了5个 Grunt 插件: grunt-contrib-uglify grunt-contrib-qunitgrunt-contrib-concatgrun ... 
- windows下的C++ socket服务器(2)
			int main(int ac, char *av[]) { ); ) { exit(); } thread t; ) { int socket_fd = accept(tcp_socket, nul ... 
- contos7忘记root密码怎么办
			首先在这个界面按"e"键 然后呢就会进入到如下图所示的界面,在LANG=zh_CN.UTF8的后面加上 init=/bin/sh, 再按 [ Ctrl + X ] 进入'单用户模式 ... 
- Java通用oracle和mysql数据库连接
			Java中oracle数据库连接写一个通用类UBUtil(){} import java.io.InputStream; import java.sql.*; import java.util.Pro ... 
- 词频统计(WEB)版
			需求: 在以前的基础上把程序迁移到web平台,通过用户上传TXT的方式接收文件. 前端页面代码: <%@ Page Language="C#" AutoEventWireup ... 
- sql%bulk_rowcount && sql%rowcount 的使用
			说明: %BULK_ROWCOUNT 属性计算FORALL迭代影响行数 在进行SQL数据操作语句时,SQL引擎打开一个隐式游标(命名为SQL),该游标的标量属性(scalar attribute)有 ... 
- (转)web开发流程
			a.项目经理与公司决策层的沟通,以确定这个需求有没有足够的人手和可行性去实现,以及与现有产品的依存关系. b.公司决策层与市场/策划部门的交流,这个过程将进行的相当充分,并且是反复.长期的,它致力于从 ... 
