【发布时间】:2010-04-30 00:35:00
【问题描述】:
我有一个多线程的客户端服务器应用程序。服务器端失败,std::list 损坏导致 SEGV。我怀疑存在某种跨线程计时问题,两个线程同时更新 std::list 并导致它被损坏。
请建议免费工具来追踪这一点或可能有帮助的策略。
【问题讨论】:
标签: multithreading segmentation-fault stdlist
我有一个多线程的客户端服务器应用程序。服务器端失败,std::list 损坏导致 SEGV。我怀疑存在某种跨线程计时问题,两个线程同时更新 std::list 并导致它被损坏。
请建议免费工具来追踪这一点或可能有帮助的策略。
【问题讨论】:
标签: multithreading segmentation-fault stdlist
如果您知道由于并发访问而损坏的共享数据结构,则在数据结构上放置一个互斥锁,以便一次只能访问一个线程,然后再试一次。
您需要确保并发线程不能更新任何共享数据。多线程读取是可以的,但需要注意多线程读取和一个或多个写入。
您能指定您使用的操作系统和编译器吗?
【讨论】: