【发布时间】:2013-08-30 19:54:05
【问题描述】:
AFAIK,多线程编程的一个主要目标是通过利用多个处理内核来提高性能。重点是最大化并行执行。
当我看到线程安全的泛型数据结构类时,我感到有些讽刺。因为线程安全意味着强制串行执行(锁定、原子操作或其他),所以它是反并行的。线程安全的类意味着序列化被封装并隐藏在类中,因此我们将有更多机会强制串行执行 - 损失性能。最好在更大(或最大)单元 - 应用程序逻辑中管理这些关键部分。
那么为什么人们想要线程安全的类呢?它们的真正好处是什么?
附言 我的意思是 thread-safe class 是一个只有线程安全方法的类,可以安全地同时从多个线程调用。 安全意味着它保证正确的读/写结果。 正确 表示其结果等于单线程执行的结果。 (例如避免ABA问题)
所以我认为术语线程安全在我的问题中包含串行执行的定义。这就是为什么我对其目的感到困惑并提出这个问题的原因。
【问题讨论】:
-
如果您没有线程安全的数据交换方式,您希望如何在两个不同的线程之间进行通信?
-
问:“线程安全类”是什么意思? To quote:“人们使用这个术语就像它意味着特定的东西,而事实上,它只是意味着“在场景 X 中正常工作”。没有“正确”的规范和 X 是什么的声明,你实际上不能实施某事并知道您解决了您真正遇到的问题。”
-
@paulsm4 我在我的问题中添加了额外的文本。我希望这能让意思清楚。
标签: c++ multithreading thread-safety