我现在唯一不明白的地方就是,举例: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