我现在唯一不明白的地方就是,举例:3个线程(a,b,c)EVENT初始化为置位,自动复位,当线程a得到时间片执行代码的时候,如果在一个时间片内没有执行完,被WINDOWS挂起到就绪队列,但是线程,b,c,因为此时EVENT的状态是复位的状态,2个线程都被WaitForSingleObjict所拒绝,那么WINDOWS是不是根本就不会把b,c线程放到就绪队列,而是放到阻塞队列,那么就绪队列只有线程a,我晕 怎么又扯到操作系统了,有点晕了 我把书上的代码段复制过来 但是不能全部复制 只把线程函数复制了吧 希望能得到解释,我晕 连我自己都不知道在问什么了
,应该是3个线程时间片的分配问题吧,就像我所描述的 b,c线程根本就不会被放到就绪队列里面
_Counter proc uses ebx esi edi,_lParam
inc dwThreads
invoke SetWindowText,hWinCount,addr szStop
and dwOption,not F_STOP
.while ! (dwOption & F_STOP)
invoke WaitForSingleObject,hEvent,INFINITE
inc dwCounter1
mov eax,dwCounter2
inc eax
mov dwCounter2,eax
invoke SetEvent,hEvent
.endw
dec dwThreads
invoke SetWindowText,hWinCount,addr szStart
ret
_Counter endp