如果设置5个参数,启动同一线程,每启动一次线程使用一个参数,线程开始后该参数为不可再用,当线程结束时再把参数设置为可用,一共需要启动20个线程,若当前启动的线程数是5个则把后面启动的线程挂起,等待参数可用再启动,请高手指教思路,或者给个例子,大体框架也行,先谢过各位了
解决方案 »
- 怎么做个端口影射的小程序?
- 图象颜色转化的问题?
- 用VC6 实现SOCKET序列化
- MFC中使用链表,相关的结构体应该在什么地方定义
- 大哥们,有什么学习CWebBrowser2 HTML的资料吗?介绍一下啊,谢谢
- 为什么有时在CPP文件中包含了另一个类的头文件,还是不能定义该类的对象?
- 如何实现模糊查询?
- 如何改变文本的颜色?
- 难题,高手请入!!!
- 小弟只有32分了,请教高手们:如何让一个表格的某一列固定不动,其他列照常滚动??
- 通过MFC WinInet方式访问HTTP后,如何再打开一个IE,使打开的IE与以前的访问共享信息(cookie,session等)
- 谁有能在XP下运行的DDK啊请贴出来啊!!!!谢谢!
一.
如果发现记数大于等于"5",则停止在原位. 进行循环等待.二.
操作参数前后要用锁. 使用了某参数就标记一下.过程如下://开始时
1锁
2for循环检查5个参数对应的标志
3找到一个可用的参数
4标记
5解锁//自己的代码//完成任务退出时
1.锁
2.恢复标示,恢复参数
3.解锁
{
int iWait=WaitForMultipleObjects(5,hEvents,INFINITE);
if(iWait-WAIT_OBJECT_0>=0 && iWait-WAIT_OBJECT_0<5)
{
ResetEvent(hEvents[iWait-WAIT_OBJECT_0],false);//如果Event为自动设置则不要这句
//do something
SetEvent(hEvents[iWait-WAIT_OBJECT_0],false);
}
else
{
//error handle
}
}
HANDLE g_hEvent = CreateEvent (NULL, TURE, TRUE, "FIVE"); // 事件对象,标志线程是否可继续执行ThreadFunc()
{
iNum++; if (iNUm >= 5)
ResetEvent (g_hEvent);
else
SetEvent (g_hEvent); WaitForSingleObject (g_hEvent, INFINITE); // 如果对象没有授信则等待
// do something
iNum--;
}初学。