2009-12-25 2 views
1

스레드 결합의 이점은 무엇입니까? 요점은 스레드 B가 실행을 마칠 때까지 스레드 A를 멈추게하는 것입니다 (예 : (B.join()) 전역 변수를 사용하여이 작업을 수행하는 이유는 무엇입니까?스레드 결합의 이점

답변

6

join()은 A가 잠자기 상태가되어 B가 끝날 때까지 CPU 시간을 소비하지 않으므로 A가 계속되기 전에 B가 완전히 종료되었음을 보장하기 때문에 일반적으로 훨씬 효율적입니다. 또한 추가 변수를 만드는 번거 로움을 피할 수 있습니다.

2

PTHREAD_CREATE_JOINABLE으로 작성된 스레드에 pthread_join() 또는 pthread_detach()을 호출하려는 또 다른 이유는 다음과 같습니다. 시스템은 스레드 종료 후 스레드와 관련된 모든 자원을 회수 할 수 있습니다. 결합 할 수있는 스레드에 결합하거나 분리하지 않으면 프로세스가 끝날 때까지 메모리 및 기타 자원 유출이 발생합니다.

+0

java에'pthread_detach()'와 비슷한 것은 없습니다. 이것은 우리가 항상'join()'을 사용해야한다는 것을 의미합니까? 'join()'을 사용하지 않으면 jvm이 자원을 해제하지 않는다는 것을 의미합니까? 스레드가 결합하지 않고 종료되면 jvm이'ReentrantLock'을 해제합니까? 스레드 로컬 저장소 ('ThreadLocal ')를 자동으로 제거합니까? –