织梦CMS - 轻松建站从此开始!

罗索

windows下使用pthread库

jackyhwei 发布于 2010-01-27 23:41 点击:次 
我听很多人都说pthreads对Windows的兼容性不好,但我又没用过,也根本不知道到底好,还是不好,只不过我看ffmpeg都有在用pthreads,而做流媒体的话ffmpeg是必不可少的,那是否ffmpeg选错了,它该怎么搞一套类似pthreads的东西出来呢?问题是它没有。所以我想试试看。
TAG:

我听很多人都说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的设置

添加执行库、目录、库文件的路径;
 

  1. //main.cpp 
  2. #include <stdio.h> 
  3. #include <pthread.h> 
  4. #include <assert.h> 
  5.  
  6. void* Function_t(void* Param) 
  7.     printf("我是线程! "); 
  8.     pthread_t myid = pthread_self(); 
  9.     printf("线程ID=%d ", myid); 
  10.     return NULL; 
  11.  
  12. int main() 
  13.     pthread_t pid; 
  14.     pthread_attr_t attr; 
  15.     pthread_attr_init(&attr); 
  16.     pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS); 
  17.     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); 
  18.     pthread_create(&pid, &attr, Function_t, NULL); 
  19.     printf("======================================== "); 
  20.     getchar(); 
  21.     pthread_attr_destroy(&attr); 
  22.     return 1; 


3 测试

编写程序,添加项目中库文件,编译运行即可。

2:在VC下使用POSIX标准的线程

POSIX下的很多东西我都很喜欢,其中就包括pthread。不过跟使用socket面临同样的问题,在Linux下调试程序并没有VC下方便。所以,希望在VC下可以pthread写东西,调试没有问题的话可以在各个平台下使用。

在网上找了一些资料,发现VC下使用pthread也是异常简单啊,呵呵,记录下来,备用~~~

有一个叫做POSIX Threads for Win32的项目,专门为win32开发了一个pthread的lib,利用它,可以很方便的在win32下实现pthread的应用。我这里使用到的是2.7.0版本的POSIX Threads for Win32,下载地址:ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe

将下载到的exe解压之后,会得到三个目录:

其中,Pre-built.2中是已经编译好的lib以及dll,同时包含了一些必要的头文件。将其中的include文件夹和lib文件夹 copy到VC的安装目录下,例如,我的是VC6.0的环境,默认安装,则,需要copy到:C:\Program Files\Microsoft Visual Studio\VC98

接着,在编程的时候,引入pthreadVC2.lib即可:

   1: #pragma comment(lib, "pthreadVC2.lib")

剩下的步骤,就和Linux下一样了,尽情享用吧^_^

(落鹤生)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201001/8409.html]
本文出处:罗索工作室 作者:落鹤生
顶一下
(2)
66.7%
踩一下
(1)
33.3%
------分隔线----------------------------
相关文章
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容