根据WaitForMultipleObjects返回值可以确定等到的是什么信号哇,
返回是WAIT_OBJECT_0或WAIT_OBJECT_0+n,n是你所等待的信号数组中信号的下标,根据返回值有启动相应的线程处理信号不久得了,这样就不会一直只执行一个信号对应操作了
WAIT_OBJECT_0是信号数组中的的0个信号
返回是WAIT_OBJECT_0或WAIT_OBJECT_0+n,n是你所等待的信号数组中信号的下标,根据返回值有启动相应的线程处理信号不久得了,这样就不会一直只执行一个信号对应操作了
WAIT_OBJECT_0是信号数组中的的0个信号
解决方案 »
- 关于服务和互斥量
- 多个timer控件执行的过程是怎么样的?
- 输出字符
- mapx中如何实现全图显示?
- google又回来啦!
- [求助]菜鸟问题,有关字符串的格式化~~~~~
- VC++中用CFileFind类的FindFile和FindNextFile实现图片文件的浏览
- 在对话框上,怎么把默认的光标弄没?也就是屏蔽键盘的操作?
- 程序修该注册表使其自启动 LPBYTE SetContent_S = GetPath(); 这里面的参数一定要是一个固定的路径吗?
- 那里有得下载《C++程序调试实用手册》啊? 多谢!!
- 那一种编程语言最好?
- 用 waveInOpen 打开声卡的时候的 DeviceID 是使用 WAVE_MAPPER(-1),还是用 0?还是要用 waveInGetNumDevs() 取得可用线路然后用 waveI
DWORD dwResult;
int nBakLen = 0;
LPBYTE pBuffer;
LPBYTE pBakBuf = new BYTE[COMM_BMAXLEN];
hEvent[0] = m_hEventKillThread;
hEvent[1] = m_pListRecv->m_hEventDataIn;while (TRUE)
{
dwResult = WaitForMultipleObjects(2, hEvent, FALSE, INFINITE);
if (dwResult == WAIT_OBJECT_0)
{
your code
}
else if (dwResult == WAIT_OBJECT_0+1)
{
... //your code
}
}
DWORD nCount, // number of handles in the handle array
CONST HANDLE *lpHandles, // pointer to the object-handle array
BOOL fWaitAll, // wait flag
DWORD dwMilliseconds // time-out interval in milliseconds
);
fWaitAll 有两种状态:
1 让线程进入等待状态,直到制定内核对象中的任何一个变为已通知状态。 2让线程进入等待状态,直到所有内核对象变为已通知状态。(TRUE)
//以上语句创建出一个最大可以累计1000000个的信号量,初始为无信号状态。 ReleaseSemaphore(m_JobSemaphore, 1, NULL);
//以上语句触发一次m_JobSemaphore信号。
//其他用法与用CreateEvent创建出的信号量的用法一样
CreateWaitableTimer(NULL, FALSE, NULL);时怎么会提示出错?
D:\work\VC_work\winThread\winThread.cpp(54) : error C2065: 'CreateWaitableTimer' : undeclared identifier
Error executing cl.exe.
Creating browse info file...请问高手是怎么回事?
下用它,出现上诉错误。
以前是
#include <windows.h>
#include <Winbase.h>但是我加上
#include <afxwin.h>就没有上面的错误?为什么?
大哥,但是好象没有减少信号量的函数啊?