2011-03-22 1 views

답변

0

t1을 t3이 실행되도록 유지할 수 없기 때문에 t3을 기다릴 수는 없지만 pthread_join을 실행 상태로 유지하는 동안 인터럽트 할 방법이 없으므로 pthread_cancel을 사용하여 t1을 취소 할 수 있습니다. 그러면 pthread_cancel이 종료되므로 더 이상 t2가 완료 될 때까지 기다리지 않고 얻을 수 있습니다. t3를 기다리는 다른 스레드.

0

나는 그것이 가능하지 않다고 믿습니다. 그러나 pthread_join() 설명에있는 조언을 따를 수 있습니다.

pthread_join을() 함수 멀티 스레드 애플리케이션에 유용 입증 한 편리하다. 프로그래머가 인수의 일부로 추가 상태를 전달하여 제공되지 않으면이 함수를 시뮬레이트 할 수있는 것은 입니다. start_routine()에 인수가 전달됩니다. 종료 스레드는 종료를 나타내는 플래그를 설정하고 해당 상태의 일부인 조건을 브로드 캐스트합니다. 연결 스레드가 해당 조건 변수를 기다립니다.

0

나는 t1과 t2 사이의 조건 변수를 사용해야한다고 생각한다. 그러면 t3와 t1을 결합 할 수있다. 이식 pthread_timedjoin_np을 모방하는

0

쉬운 방법 :

  1. pthread_join을 수행하기 위해 새로운 스레드를 생성하고 그것을 조건 변수 또는 세마포어를 전달합니다.
  2. 조건 변수 또는 세마포어에서 시간 초과 대기를 수행하십시오.
  3. 새 스레드에서 pthread_cancel으로 전화하십시오.
  4. 새 스레드에서 pthread_join으로 전화하십시오.

물론 세부 정보가 남아 있지만 기입하기가 쉽습니다.

관련 문제