【发布时间】:2013-11-15 07:16:20
【问题描述】:
当参数被传递到std::thread() 时,产生新线程的线程是否会等到所有参数都完全复制到新线程本地存储中?
简单示例:
void f()
{
int array[10];
........ //done something with array
std::thread th(someF, array); //assuming that someF accepts int[]
th.detach();
}
我是否应该自动假设在f() 结束之前安全复制了所有数据?
我看到的一种情况是,假设f() 不等待并全力以赴,th 正试图复制正在被破坏的array。
【问题讨论】:
-
您不是将数组传递给该线程,而是将指针传递给第一个元素。
标签: c++ multithreading c++11 stl