【发布时间】:2015-03-02 07:09:29
【问题描述】:
以下程序在使用 Visual Studio 2013 编译时会出现一些奇怪的编译/运行时行为:
#include "stdafx.h"
#include <thread>
#include <chrono>
#include <iostream>
int main()
{
{//works
std::thread([](){
std::cout << " thread running1\n";
});
}
{//compile but synstax error exist
auto func = [](){
std::cout << " thread running2\n";
};
std::thread(fun); //fun is not defined
}
{//compile, see next block for mystery compile error
auto func = [](){
std::cout << " thread running2\n";
};
std::thread tmp(func);
}
{//does not compile and don't know why
auto func = [](){
std::cout << " thread running2\n";
};
std::thread(func); //error C2371: 'func' : redefinition; different basic types
}
return 0;
}
当这个程序工作时,可能会因为线程之间存在竞争条件而崩溃。主线程可能在其他线程之前结束。
有人知道为什么第二个块和最后一个块不起作用吗?
【问题讨论】:
标签: c++ multithreading c++11 visual-studio-2013 stdthread