信号灯计数在调试与运行时的表现有所不同(200分)(0分)

  • 主题发起人 主题发起人 ygyu
  • 开始时间 开始时间
Y

ygyu

Unregistered / Unconfirmed
GUEST, unregistred user!
请看系统相关的此问题
200分喔!
 
线程同步与时间又紧密的联系, 调试时与运行时
的各线程的指令执行序列很不相同, 所以表现也不同.
 
两次 ReleaseSemaphore(hSem, 1, &nPrevCount)
之间主线程的时间片未用完,所以子线程还得不到机会被激活运行
如果出现这种情况,主线程第一个ReleaseSemaphore(hSem, 1, &nPrevCount)
完成后刚好时间片用完了,子线程能得到机会运行,
当轮回来主线程运行第2个ReleaseSemaphore(hSem, 1, &nPrevCount)时
就会得到你上面想要的结果,不过机会很小.
主线程的2个ReleaseSemaphore(hSem, 1, &nPrevCount)
之间放一行:Sleep(0) (放弃当前的时间片,让其他同等级线程运行)
可能能达到你想要的效果


 
接受答案了.
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
886
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部