我在windows下用事件处理线程间的同步,调用的函数如下:
hHandle = CreateEvent(...);
SetEvent(hHandle);
WaitForSingleObject(hHandle,...)
CloseHandle(hHandle);//例子如下:
线程A:
.....
SetEvent(hHandle,...);......线程B;....
WaitForSingleObject(hHandle,...);
//如果等到信号,程序往下执行,否者等待直到超时...
CloseHandle(hHandle);如何在unix下用对应的函数代替上面的函数?请给出思路或是与上面类似的代码。
hHandle = CreateEvent(...);
SetEvent(hHandle);
WaitForSingleObject(hHandle,...)
CloseHandle(hHandle);//例子如下:
线程A:
.....
SetEvent(hHandle,...);......线程B;....
WaitForSingleObject(hHandle,...);
//如果等到信号,程序往下执行,否者等待直到超时...
CloseHandle(hHandle);如何在unix下用对应的函数代替上面的函数?请给出思路或是与上面类似的代码。
解决方案 »
- CWinApp对象既然是从CWinThread继承的,没有看见有调用run()函数的地方啊
- 关于CArray,CList,Vector,List速度测试
- 求 VC vista风格 界面库 最好是开源的 收费也可以。
- vc通过cmd调用mysqldump实现数据库的备份问题,为什么只创建文件,而内容为空呢?望高手指点!在线等
- 流动电子警察 ---火花测速
- 请教!关于TCP,UDP的SOCKET问题!谢谢
- 请大家帮我看看这是什么错误,本人初学者,谢谢大家!
- 熟悉MSMQ编程的高手请进××××××××××××××××××××××××
- 棘手的问题???
- 位图中 的保留字
- 问个低手问题,用什么函数可以判别一个文件的存在?
- 请问关于超文本链接拖放如何实现?就像网络蚂蚁的拖放窗口!
pthread_cond_wait
#include<windows.h>
#include<iostream.h>int count;
int i=0;
HANDLE ThreadHandle[100]; //Ï߳̾ä±ú¡£
DWORD ThreadId[100]; //Ïß³ÌIdºÅ¡£//Ï̺߳¯Êý
void f1(int i)
{
cout<<"µÚ"<<i<<"¸öÏ̵߳ÄIDºÅÊÇ:" <<GetCurrentThreadId()
<<endl;
}//Ï̺߳¯Êý
void f2(int i)
{
cout<<"µÚ"<<i<<"¸öÏ̵߳ÄIDºÅÊÇ:" <<GetCurrentThreadId()
<<endl;
}//Ï̺߳¯Êý
void f3(int i)
{
cout<<"µÚ"<<i<<"¸öÏ̵߳ÄIDºÅÊÇ:" <<GetCurrentThreadId()
<<endl;
}//Ï̺߳¯Êý
void f4(int i)
{
cout<<"µÚ"<<i<<"¸öÏ̵߳ÄIDºÅÊÇ:" <<GetCurrentThreadId()
<<endl;
}void parbegin(void *f,void *f1,void *f2,void *f3)//Ï̴߳´½¨£¬ÒòΪPARBEGINµÄ¹¦ÄÜÊDzúÉúÒ»×é²¢·¢Ị̈߳¬²»ÄÜÓÃһѭ»·´´½¨ËùÓÐÏ̡߳£
{
ThreadHandle[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)f,(LPVOID)i,0,&ThreadId[i]);//´´½¨Ïß³Ì
i++;
ThreadHandle[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)f1,(LPVOID)i,0,&ThreadId[i]);//´´½¨Ïß³Ì
i++;
ThreadHandle[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)f2,(LPVOID)i,0,&ThreadId[i]);//´´½¨Ïß³Ì
i++;
ThreadHandle[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)f3,(LPVOID)i,0,&ThreadId[i]);//´´½¨Ïß³Ì
i++;
}void parend()
{
WaitForMultipleObjects(count,ThreadHandle,true,100);//µÈ´ý²¢·¢Ïß³ÌÍê³É
}
void main()
{
count=4;
cout<<"²¢·¢Ï߳̿ª·¢£º\n";
parbegin(f1,f2,f3,f4); //²¢·¢Ï߳̿ªÊ¼¡£
parend(); //Ï̺߳ϲ¢¡£
cout<<"ËùÓÐÏ̺߳ϲ¢!"<<endl;
}