只有还没做出来的,没有想不到的。
从linux移植到windows的C++程序,肯定要改造下 socket和线程库。
某日,突然想到 windows 可以使用pthread库么?搜索,果然有线程的解决方案。
1.下载:http://sourceware.org/pthreads-win32/#download
直接下载最新的就行,目前是: prebuilt-dll-2-9-1-release.zip 因为是windows平台的,所以下载 .zip 或。exe就行,.exe 就是自解压而已,别无其他。最新版本 没有.exe的下载版本了,其内容和zip的一样。但是 zip和 tar.gz tar.bz2的 不太一样。zip比较全,包括了 已经编译好的二进制Pre-built.2,源码pthreads.2,还有一个3.QueueUserAPCEx 不知道到底干什么用的,是一个alert的driver,编译 需要 DDK ,默认vs2010 没有安装。Windows Device Driver Kit NTDDK.h 需要额外单独安装。
2.安装这些开发库到你的环境中,包括 lib 到vs的lib文件夹,dll到path目录中,include到vs的include文件夹中。这样比较方便么。
copy include\pthread.h "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\"pthread.h copy include\sched.h "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\"sched.h copy include\semaphore.h "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\"semaphore.h copy dll\x86\pthreadVC2.dll %windir%\pthreadVC2.dll copy dll\x86\pthreadVCE2.dll %windir%\pthreadVCE2.dll copy dll\x86\pthreadVSE2.dll %windir%\pthreadVSE2.dll copy lib\x86\pthreadVC2.lib "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\"pthreadVC2.lib copy lib\x86\pthreadVCE2.lib "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\"pthreadVCE2.lib copy lib\x86\pthreadVSE2.lib "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\"pthreadVSE2.lib
3.测试 windows下的pthread库
#include<stdio.h> #include<pthread.h> #include<Windows.h> #pragma comment(lib, "pthreadVC2.lib") //必须加上这句 void*Function_t(void* Param) { pthread_t myid = pthread_self(); while(1) { printf("线程ID=%d \n", myid); Sleep(4000); } return NULL; } int main() { pthread_t pid; pthread_create(&pid, NULL, Function_t,NULL); while (1) { printf("in fatherprocess!\n"); Sleep(2000); } getchar(); return 1; }
转载http://www.cnblogs.com/ayanmw/archive/2012/08/06/2625275.html