我最近查看了这个std::thread参考。
对于移动构造函数,它说:
thread( thread&& other );
移动构造函数。构造线程对象以表示由其表示的执行线程 其他。 此次通话后,其他人不再代表其中的一个主题 执行。
此外,在下面的示例中还有以下几行:
int n=0;
std::thread t3(f2, n);
std::thread t4(std::move(t3)); // t4 is now running f2(). t3 is no longer a thread
我不明白线程t3
和t4
究竟发生了什么?
t4
是否会等到t3
完成执行? t3
不再是一个主题是什么意思?
答案 0 :(得分:3)
std::thread
不是一个帖子。它表示由底层操作系统提供的线程,您可以使用它来操作线程。这就像car
对象不是真正的汽车。
move
将表示的线程从一个std::thread
移动到另一个move
。在t3
之后,std::thread
是一个无胆的std::thread
。 t3
对象仍然存在,但t4
不引用任何实际的系统线程。 t3
现在代表之前由join
代表的主题,但除非您致电var data = '{"email.com":["email@email.com|username\\r"],"email.de":["email@email.de|username"]}';
var obj = JSON.parse(data);
var keys = Object.keys(obj);
for (i = 0; i < keys.length; i++) {
document.getElementById('types').innerHTML += '<br>' + keys[i]; // I want to get email.com , email.de
}
,否则它不会等待。