我听说做“global_variable + = individual_thread_data”是不安全的;例如[没有锁]。
但如果只在每个线程中执行“global_variable = individual_thread_data”,它是否是线程安全的?
答案 0 :(得分:2)
否,它同样不安全(另一个线程可能同时使用该变量)。
答案 1 :(得分:2)
不考虑变量类型,它不是线程安全的。您应该使用互斥锁/关键部分或原子变量。
有时编写一个简单的代码会很有用,它会分配几种类型的变量并对其进行反汇编以查看它将如何分配。
此外,对于cas-supporting architecture,您可以使用汇编程序代码来模拟原子变量。
(另一个提示:如果在线程中使用,变量应该声明为volatile
,以防止编译器完成优化。)