更改变量而不计算先前涉及的数据是否安全?

时间:2010-12-04 12:20:23

标签: multithreading thread-safety pthreads global-variables

我听说做“global_variable + = individual_thread_data”是不安全的;例如[没有锁]。

但如果只在每个线程中执行“global_variable = individual_thread_data”,它是否是线程安全的?

2 个答案:

答案 0 :(得分:2)

,它同样不安全(另一个线程可能同时使用该变量)。

答案 1 :(得分:2)

不考虑变量类型,它不是线程安全的。您应该使用互斥锁/关键部分或原子变量。

有时编写一个简单的代码会很有用,它会分配几种类型的变量并对其进行反汇编以查看它将如何分配。

此外,对于cas-supporting architecture,您可以使用汇编程序代码来模拟原子变量。

(另一个提示:如果在线程中使用,变量应该声明为volatile,以防止编译器完成优化。)