2014-07-16 3 views
2

C++ 스레드에 대한 몇 가지 사항을 더 잘 이해할 수 있도록 도움을 요청합니다. GNU GCC 컴파일러에서 codeblock을 사용하고 있으므로, pthread.h (AFAIK)가 없으므로 process.h와 _beginthread를 사용하고 있습니다. 스레드가 실행할 함수를 재사용 할 수 있기를 바랍니다. 이 함수에는 while (! finished) 문이있어서 스레드 종료를 원할 때 true로 끝낼 수 있습니다. 버튼을 클릭 할 때마다 완성 된 변수가 true로 설정되어 스레드가 죽을 때까지 기다렸다가 동일한 기능을 사용하여 다른 스레드를 시작하고 싶습니다. 그럼 첫 번째 스레드의 끝을 어떻게 기다릴 수 있습니까? 죄송합니다. 이해하기가 다소 복잡하지만 더 잘 설명 할 수는 없습니다.스레드 종료 대기 (C++)

나는 누군가가 나를 도울 수 있기를 바랍니다. 나는 세상을 쓰레드에 익숙하지 않기를 바랍니다. 정말 도움이 필요합니다. 대단히 감사합니다.

+0

C++에는'join' 함수가있는 표준 스레딩 라이브러리가 있습니다. – chris

+1

IDE는 사용 가능한 라이브러리와 아무 관련이 없습니다. 컴파일러를 확인하고 C++ 11 스레드 API를 사용하십시오. –

+0

죄송합니다. 세계에 처음 오셨습니다. std lib에 대해 말씀해 주시겠습니까? 나는 gnu gcc와 함께 코드 블럭을 사용하고 있기 때문에, pthread.h에 관해서 이야기하고 있다면 미안하지만 사용할 수는 없다. –

답변

2

귀하의 게시물에 WinAPI가 언급되어 있습니다. Windows는 수십 년 동안 자체 스레드 라이브러리를 가지고 있습니다. 그것은 믿을만하고 사용하기가 매우 쉽습니다. 통화의 예 :

HANDLE hThread = CreateThread(nullptr, 0, thread_entry_point, this, 0, &m_dwThreadId); 

이것은 모든 Windows 플랫폼에서 작동합니다. Windows에 대한 작업을 수행하면이 점에 대해 생각해 볼 가치가 있습니다.

저는 수십 년 동안 Windows 스레드와 프로세스를 개인적으로 사용했습니다. 그들은 문서가 말하는 것처럼 정확하게 작동합니다. 우리 시대의 PC는 문제없이 수천 개의 스레드를 쉽게 시작할 수 있습니다.

게다가 정말로 유일한 이식 가능한 솔루션은 C++ 11 스레드입니다.

+0

고맙습니다. 그렇다면 어떻게 스레드의 끝을 기다릴 수 있습니까? –

+0

스레드가 여전히'GetExitCodeThread'로 활성화되어 있는지 확인하거나 단순히 스레드 핸들을 기다릴 수 있습니다. 스레드가 종료 될 때 신호를받습니다. –

+0

고맙습니다. 이 방법과 C++ 11 솔루션을 모두 시도하겠습니다. –