0
當在C++ 11中查找線程示例時,每個示例都會加入線程。我是否總是需要加入線程?
我需要加入線程嗎?
更多信息
我在「遊戲圈」所以這是不可能的,之前線程完成執行程序將退出創建線程。線程函數完成執行後,我可以只設置一個原子標誌,如done
?
例如
請把這個例子在這裏是否已加載美孚只得出:
struct Foo {
std::atomic<bool> isLoaded = false;
void load() {
std::thread([&isLoaded]() {
doSomethingExpensive();
isLoaded = true;
});
}
void draw() {
if (!isLoaded) { return; }
}
}
void App::setup() {
for (int i = 0; i<100; ++i) {
std::shared_ptr<Foo> fooPtr;
fooPtr->load();
fooPtrs.push_back(fooPtr);
}
}
void App::loop() {
for (auto &foo : fooPtrs) {
fooPtrs->draw();
}
}
這是合適的/好習慣/一個好的策略?
對於任何感興趣的人,Scott Meyers在他的[Going Native 2013談話](http://channel9.msdn.com/Events/GoingNative/2013/An-Effective-Cpp11-14-Sampler)中對此有點談。我可以看到至少有一個正確的答案:你永遠不應該允許可連接的線程被銷燬。 – user786653