windows里面进程线程控制应该用什么头文件

jingzenghui 发布于 2011/06/30 16:15
阅读 1K+
收藏 0

linux下写的这段代码pthread_t id1,id2;  windows下一直报错,估计是头文件的问题

请问windows里面进程线程控制应该用什么头文件?

加载中
0
ddatsh
ddatsh

pthread_t 这个是POSIX的

WIN的不一样
windows.h

jingzenghui
jingzenghui
已经包含这个头文件了 、 但是编译还是通不过啊
0
ddatsh
ddatsh

你不是想在WINDOWS 下直接用LINUX下那套线程的代码吧
SDK 不一样的

 

#include <windows.h> //使用多线程必须的

#include <iostream> //这是观看效果用的

using namespace std;

DWORD WINAPI MTOne(LPVOID param); 

DWORD WINAPI MTTwo(LPVOID param);

 

DWORD WINAPI MTOne(LPVOID param){

while(true)

{

Sleep(1000);

cout<<"hi! ";

}

//一旦返回,这个线程就结束了。

return 0;

}

DWORD WINAPI MTTwo(LPVOID param){

while(true)

{

Sleep(1000);

cout<<"joy! ";

}

return 0;

}

 

 

int main(int argc, char* argv[])

{

int inp=0;

HANDLE hand=CreateThread (NULL, 0, MTOne, (void*)&inp, CREATE_SUSPENDED, NULL);

HANDLE hand2=CreateThread (NULL, 0, MTTwo, (void*)&inp, CREATE_SUSPENDED, NULL);

while(true){

cin>>inp;

if(inp==1) //运行线程

{

ResumeThread(hand);

ResumeThread(hand2);

}

else //暂停线程

{

SuspendThread(hand);

SuspendThread(hand2);

}

};

//终止线程

TerminateThread(hand,1);

TerminateThread(hand2,1);

return 0;

}


jingzenghui
jingzenghui
也就是说有关线程的那段代码得改改?要不你帮帮我? /*pthread1*/ if((ret=pthread_create (&id1,NULL,(void *) sdmsg,NULL)) != 0) { perror("thread1"); exit(1); } if((ret=pthread_create (&id1,NULL,(void *) recivemsg,NULL)) != 0) { perror("thread2"); exit(1); } pthread_join(id1,NULL); pthread_join(id2,NULL); 帮忙改改?
0
xunxun
xunxun
windows下如果要使用pthread_t,你得用pthread-win32的库
xunxun
xunxun
http://sourceware.org/pthreads-win32/ 下的对么?
jingzenghui
jingzenghui
好像不行啊 具体库怎么写?
jingzenghui
jingzenghui
哦 我试试
ddatsh
ddatsh
+1
0
麦麸子lee
麦麸子lee
有个跨平台的线程库
jingzenghui
jingzenghui
是什么???
0
麦麸子lee
麦麸子lee
ZThread,很有java的多线程的风格,开源的,自己下来编译下就是了
jingzenghui
jingzenghui
嗯 谢谢啦~~
返回顶部
顶部