我正在尝试对一个不断崩溃的多线程程序进行故障排除。
我已将错误归结为此功能: SwitchToThread();
是WINAPI的一部分
我在这里阅读了一些文档:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686352(v=vs.85).aspx
但它并没有给我带来太多启示。我对实际多线程编程的理解是有限的。
SwitchToThread()似乎试图让主处理器与其他处理器共享它的负载。
我之前和之后都放了打印功能,这是我在崩溃之前得到的输出:
Before SwitchToThread
After SwitchToThread
Before SwitchToThread
After SwitchToThread
Before SwitchToThread
After SwitchToThread
Before SwitchToThread
After SwitchToThread
Before SwitchToThread
After SwitchToThread
Before SwitchToThread
After SwitchToThread
Before SwitchToThread
etc.
在它最终打印出“SwitchToThread之后”之前崩溃了 - 所以我知道这个功能至少是问题的一部分。它似乎无法转移负载。
WinBase.h中SwitchToThread()的函数定义如下所示:
WINBASEAPI
BOOL
WINAPI
SwitchToThread(
VOID
);
我不明白 - 它似乎没有做任何事情。
任何帮助,或者如果你能给我指点SwitchToThread()的更多文档 - 它会有所帮助。
答案 0 :(得分:1)
你真的没有证据表明SwitchToThread
与问题有关,而且几乎肯定没有。这只是一个先发制人点,调度程序从做一件事做到做其他事情。据推测,这是导致问题的其他因素。