이유는 무엇입니까? Emplace 백 그라디언트 벡터
#include <iostream>
#include <thread>
#include <vector>
std::vector<std::thread> threads(3);
void task() { std::cout<<"Alive\n";}
void spawn() {
for(int i=0; i<threads.size(); ++i)
//threads[i] = std::thread(task);
threads.emplace_back(std::thread(task));
for(int i=0; i<threads.size(); ++i)
threads[i].join();
}
int main() {
spawn();
}
내가 주석 라인 스레드로 스레드를 만들 경우
는 복사/고운 그래서 할당을 이동하지만, 자리에 스레드를 생성 할 때 왜 작동하지입니까?
는 "작동하지 않는"와 "정의되지 않은 행동"에 대해 더 구체적으로하시기 바랍니다. 또한 개체를 현재 위치에서 생성하려면 (즉, 완전히 elliding 복사본) threads.emplace_back (task)을 수행해야합니다. – Dmitry
참여하려는 스레드가 결합 할 수 없습니다. C++에 대한 일반적인 조언은 항상 그렇듯이 더 복잡한 작업을하기 전에 * int와 std :: vector을 완전히 이해했는지 확인해야합니다. 문제가 해결 될 때까지 이동하지 말고 문제가있을 때마다 먼저 int 또는 std :: vector 중 하나로 줄이십시오. –