最近在看《C++多核高级编程》这本书,收集了些有用的东西,方便在windows下使用POSIX标准进行Pthread开发,有利于跨平台。
--------------------------------------------------
windows下使用pthread库时间:2010-01-27 07:41来源:罗索工作室 作者:落鹤生 点击:1220次
我听很多人都说pthreads对Windows的兼容性不好,但我又没用过,也根本不知道到底好,还是不好,只不过我看ffmpeg都有在用pthreads,而做流媒体的话ffmpeg是必不可少的,那是否ffmpeg选错了,它该怎么搞一套类似pthreads的东西出来呢?问题是它没有。所以我想试试看。
1 下载库
建议大家下载:ftp://sources.redhat.com/pub/pthreads-win32/这个自解压文件,压缩包里的pthreads.2目录是源码,Pre-built.2目录是编译所需的头文件和库文件。
如果要自行编译请看这里:
使用微软的CL来编译:
rem cl.bat
cl.exe main.cpp /c /I"c:/pthreads-w32-2-7-0-release/Pre-built.2/include"
link.exe /out:main_cl.exe main.obj /LIBPATH:"c:/pthreads-w32-2-7-0-release/Pre-built.2/lib" pthreadVC2.lib
pause
或者使用GCC来编译:
rem gcc.bat
g++.exe -o main.o -c main.cpp -I"c:/pthreads-w32-2-7-0-release/Pre-built.2/include"
g++.exe -o main_gcc.exe main.o "c:/pthreads-w32-2-7-0-release/Pre-built.2/lib/libpthreadGC2.a"
pause
嘿嘿!开源就是好啊,跨平台实现得如此容易
2 vc的设置
添加执行库、目录、库文件的路径;
01. //main.cpp
02. #include <stdio.h>
03. #include <pthread.h>
04. #include <assert.h>
05.
06. void* Function_t(void* Param)
07. {
08. printf("我是线程! ");
09. pthread_t myid = pthread_self();
10. printf("线程ID=%d ", myid);
11. return NULL;
12. }
13.
14. int main()
15. {
16. pthread_t pid;
17. pthread_attr_t attr;
18. pthread_attr_init(&attr);
19. pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS);
20. pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
21.