无法修改其他线程中的ref传递的值

时间:2018-07-03 12:18:44

标签: c++ multithreading concurrency

我正试图演示给一个同事,为什么您最好使用以下代码将const引用传递给执行只读操作的函数。令我惊讶的是,即使我在另一个线程处于睡眠状态时更改passedBool的值,它也会显示“这很安全!”。

我正在尝试确定是否在某处打了错,是否编译器优化了代码并通过复制传递了passedBool以避免某些开销,或者是否启动了另一个线程创建了{{1}的本地副本}。

passedBool

1 个答案:

答案 0 :(得分:3)

  

线程函数的参数按值移动或复制。如果   一个引用参数需要传递给线程函数,它具有   要包装(例如,使用std :: ref或std :: cref)。

from here