Sha*_*ala 6 c++ debugging multithreading asynchronous visual-studio-2008
我正在研究一个处理大量同步问题的多线程C++程序.我正在使用Visual Studio 2008.
当我使用断点调试它时,我的程序的运行时行为(跨线程执行语句的顺序)似乎发生了变化.这可以解释一下吗?这里的概念是什么?我希望执行的顺序保持不变.
第二个问题 - 如果Thread1被等待函数调用阻止.Thread2具有等待执行的语句,处于就绪状态.是否存在程序等待Thread1继续而不是执行Thread2的情况?我已经删除了两个线程之间的所有依赖关系,并确保Thread2不等待任何资源.
感谢回应.
这篇关于多线程调试技术的文章对这个主题做了一些很好的总结:
在调试器下运行时,多线程错误可能不会浮出水面.多线程错误对应用程序中事件的时间非常敏感.在调试器下运行应用程序会改变时序,因此可能会掩盖问题.当您的应用程序在测试中失败或更糟糕的是客户环境,但在调试器下可靠运行时,几乎可以肯定是代码中的计时问题.
...以及更具体的后一个问题,重要的是要了解 - 在大多数情况下 - 操作系统可以随时中断任何线程的执行,即使是那些"准备好"的线程也是如此.执行.