C如果一个线程写完切换bool一次,是否可以安全地在一个其他线程的
我正在构建一个非常简单的程序作为练习.
这个想法是通过递归迭代其所有内容,并总结目录(及其子目录)中包含的所有文件的大小来计算目录的总大小. 为了向用户显示程序仍在工作,此计算在另一个线程上执行,而主线程打印一个点.每秒一次. 现在主线程当然需要知道什么时候应该停止打印点并且可以查找结果. 是否有必要在这里使用原子数据类型,或者它是否过度,是否可以使用普通数据类型? 解决方法
是的,这是必要的.规则是如果两个线程可能同时访问同一个内存,并且至少有一个线程是编写器,那么您就有数据竞争.具有数据争用的程序的任何执行都具有未定义的行为.
C 14标准的相关引用: 1.10 / 23
1.10 / 6
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |