相关疑难解决方法(0)

我是否需要在多线程环境中保护对STL容器的读访问权限?

我有一个std :: list <>容器和这些线程:

  • 一个写作者线程无限地添加元素.

  • 一个读取器/写入器线程,可在可用时读取和删除元素.

  • 几个读取器线程访问容器的SIZE(通过使用size()方法)

有一个普通的互斥锁可以保护前两个线程对列表的访问.我的问题是,尺寸读取器线程是否也需要获取此互斥锁?我应该使用读/写互斥?

我在使用Visual C++ 6的Windows环境中.

更新:看起来答案尚不清楚.总结主要疑点:我是否仍然需要保护SIZE读取器线程,即使它们只调用size()(返回一个简单的变量),考虑到我不需要确切的值(即我可以假设一个+/- 1变化)?竞争条件如何使我的size()调用返回一个无效值(即一个完全无关的值)?

:通常,必须保护读卡器线程以避免竞争条件.不过,在我看来,上述更新中提出的一些问题尚未得到解答.

提前致谢!

谢谢大家的答案!

c++ concurrency multithreading stl visual-c++

8
推荐指数
1
解决办法
3113
查看次数

标签 统计

c++ ×1

concurrency ×1

multithreading ×1

stl ×1

visual-c++ ×1