c++ - 编写线程安全的容器

标签 c++ multithreading

<分区>

有人可以推荐一本关于如何编写线程安全容器的好书吗?
谢谢

最佳答案

线程安全容器没有 Elixir !

例如此代码不是线程安全的,无论您使用什么容器:

if (!container.has(value)) container.add(value);

也不是:

container[value] = container[value] + 42;

代码可以是线程安全的,但它需要的不仅仅是线程安全的容器。

更糟糕的是:线程安全容器不会给你带来太多好处。它们可能有助于您在教科书中找到的简单案例,但在实践中存在的更复杂的案例中,无论如何您都需要一把锁(典型案例见上文)。在这种情况下使用线程安全容器将纯粹是开销。

看看 Java,它是从线程安全容器开始的。几年后,Java 切换到线程不安全容器并弃用了旧的线程安全容器。

所以我的建议是:不要寻找线程安全的容器。相反,寻找一本如何编写线程安全代码的好书

更新澄清:我说的是标准容器,如 vector 、 map 和字符串。

关于c++ - 编写线程安全的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6691399/

相关文章:

c++ - || while 条件下的运算符(operator)未按预期工作

c++ - strcpy_s 不适用于 gcc

c++ - GStreamer GError boost::: system::error_code?

c++ - 使用包含互斥体的类的方法实例化 cpp11 线程

c# - 程序在访问消息队列时挂起

java - 如何在一定时间限制后调用另一个 Activity

c - 在启用线程和 float 的情况下使用 fftw3.3.6 时 undefined reference

c++ - C++ 中的 OpenMP 和资源管理

c++ - C/C++ : any way to get reflective enums?

python - 使用 Flask Web 应用程序监控实时数据流