【发布时间】:2016-12-18 20:23:29
【问题描述】:
我正在构建一个非常简单的程序作为练习。
这个想法是通过递归迭代其所有内容,并对目录(及其子目录)中包含的所有文件的大小求和来计算目录的总大小。
为了向用户显示程序仍在运行,此计算在另一个线程上执行,而主线程每秒打印一个点 .。
现在主线程当然需要知道它什么时候应该停止打印点并且可以查找结果。
可以使用例如std::atomic<bool> done(false); 并将其传递给将执行计算的线程,一旦完成,它将设置为 true。但我想知道在这种简单的情况下(一个线程一旦完成写入,一个线程定期读取直到非零)是否有必要为此使用原子数据类型。显然,如果 多个 线程可能会对其进行写入,则需要对其进行保护。但是在这种情况下,只有一个写线程和一个读线程。
这里是否有必要使用原子数据类型,或者是否过度使用而可以使用普通数据类型来代替?
【问题讨论】:
标签: c++ multithreading atomic