루프 중에 새로운 스레드를 만드는 것이 안전합니까? 나는이 방법을 시도했다 :루프에 새 스레드를 만드는 것이 안전합니까?
std::thread thread(ClientLoop,clientSocket)
하지만 함수가 반환하면 바로 오류가 발생합니다.
while (true){
cout << "Waiting for new connections" << endl;
clientSocket = accept(listenSocket, nullptr, nullptr);
cout << "Client connected" << endl;
new thread(ClientLoop,clientSocket);
}
이렇게하면 작동하지만, 메모리 누수가 없는지 궁금합니다. 감사.
: 당신이 정말로 이렇게 할 경우
, 그것은 이런 식으로 끝났다? 이것은 너무 많은 연결을 받아들이는 무한 루프이기 때문에 스택 오버플로가 될 수 있습니까? – Codor
그것은 R6010을 던졌습니다 - abort()가 호출되었습니다 – Tomas
새 스레드를 생성하는 것은 비싸다는 것에주의하십시오. 데이터를 순차적으로 처리하는 것이 스레드를 만드는 것보다 시간이 더 걸릴 가능성이 큽니다. 따라서 쉽게 병렬 처리가 가능할 것이라고 맹목적으로 바라지 마십시오. – Mehrdad