读书人

请问一个API函数的意思

发布时间: 2013-11-21 23:38:25 作者: rapoo

请教一个API函数的意思
WaitForSingleObject函数用来检测hHandle事件的信号状态,在某一线程中调用该函数时,线程暂时挂起,如果在挂起的dwMilliseconds毫秒内,线程所等待的对象变为有信号状态,则该函数立即返回;如果超时时间已经到达dwMilliseconds毫秒,但hHandle所指向的对象还没有变成有信号状态,函数照样返回。参数dwMilliseconds有两个具有特殊意义的值:0和INFINITE。若为0,则该函数立即返回;若为INFINITE,则线程一直被挂起,直到hHandle所指向的对象变为有信号状态时为止。


这个有信号状态倒底是什么意思..

打开 OR 关闭 的那一瞬间?
[解决办法]
去买本《windows核心编程》仔细看一遍
[解决办法]
有2个线程
分别从1跑到100,现在有个要求,由于A比较慢,当线程B跑到50的时候,就要等A也跑到50,然后继续跑

B跑到50的时候,执行WaitForSingleObject,没信号就睡觉
当A跑到50的时候,执行SetEvent,设置有信号,然后A就不管了继续执行,这时,线程B被唤醒,B也继续执行后面的代码

CreateEvent来建立信号对象,当然WaitForSingleObject还可以对hThread,hProcess执行等待
[解决办法]
假如传递给WaitForSingleObject的是一个互斥体对象,
// 创建一个互斥体时,第二个参数设为false,此时没有任何一个线程拥有该互斥体对象,
// 这时这个互斥体对象就被操作系统标记为有信号状态
hMutex:= CreateMutex(nil, false, nil);

// 在一个线程函数中
begin
// 这时由于这个互斥对象不属于任何一个线程,即有信号状态,
// 操作系统就把当前线程的id指派给该互斥对象的线程id ,并把该互斥对象标记为无信号状态
WaitForSingleObject(hMutex,INFINITE);
// do something...

读书人网 >.NET

热点推荐