windows线程调度问题
遇到这样一个问题,希望有同学帮忙解答,先谢谢了:
当我在运行一个线程A的时候,突然线程B打断了线程A,运行了一会儿,并修改了一个全
局变量g,这是不希望出现的。
我怀疑是这样的:当线程A运行了一段之后,他的优先级被调度器降低了;而线程B由于
等待了较长时间,优先级被调度器提高了。
基于这个想法,我用函数
BOOL SetThreadPriorityBoost(HANDLE hThread,BOOL DisablePriorityBoost);禁止调
度器动态改变线程A和B的优先级,但是仍然会出现线程B打断A的情况。不清楚为什么会
这样?
------解决方案--------------------
我猜可能不是优先级的问题,而是A线程运行一段时间后,由于某些条件的限制,线程被挂起,所以才导致B线程执行了。可以设置一个互斥量来判断下,只有A确实被挂起时,B才可以被执行。然后再看下结果