如果有一些代码被两个线程同时写入同一个对象,我的理解是它不会产生任何编译时错误,这就是调试多线程程序如此困难的部分原因。但是这会产生运行时错误/异常吗?
有没有人能推荐一些好的多线程调试技术?
谢谢。
发布于 2012-02-15 13:43:35
从两个或多个不同的线程内部访问同一对象不会在运行时或调试器中产生错误,但它很可能会以您不想要的方式干扰对象。
在多线程环境中安全地处理它的方法是使用互斥锁和信号量。对于互斥锁,请检查wikipedia link。
Mutexes通常用于限制一个线程一次只能访问一个对象的情况。
另一方面,信号量是一种更通用的情况(互斥量实际上是信号量的特例),它有一个计数器,即每个线程将根据信号量的激活/停用而增加/减少。当信号量达到0时,它将锁定自身和导致它的线程。有关信号量的更多信息,请查看wikipedia page
如果你想要更具体的建议,那么我建议你给我们关于你的目标操作系统和/或你正在使用的API的信息,因为任何与线程(互斥、信号量等)有关的信息。特定于操作系统
https://stackoverflow.com/questions/9288365
复制相似问题