2017-01-24 2 views
-3

스레드가 두 개있어 T1이 호출 실행을 멈추었습니다. 그리고 동시에 다른 스레드 T2가 연결이 끊어집니다.스레드 동기화 문제 C++

T2가 연결 해제되는 동안 T1이 정리 된 다음 자체 정리가 수행됩니다. T1이 차단되어 있기 때문입니다. T2는 또한 응답하지 않으며 소프트웨어의 기타 원치 않는 동작을 유발합니다.

하나의 가능한 솔루션은 T1에 대한 대기 제한을 갖는 것입니다. 이것을 처리하는 가장 좋은 방법입니까?

+1

C++ 솔루션을 원할 경우 MCVE를 제공해야합니다. 다중 처리에 대한 일반적인 질문은 C++ 태그를 삭제해야합니다. – luk32

+0

C++ 태그를 삭제하십시오. – sach

답변

1

솔루션은 세 번째 스레드를 도입하는 것입니다.

T3는 T1 및 T2를 만듭니다. T1이 (가) 호출을 실행 중이며 차단되었습니다. T2는 끝났지 만 정리는 T3의 책임이므로 T1을 기다릴 필요가 없습니다. T2가 차단되는 원치 않는 동작이 없습니다.