현재 제가 처리하고있는 것은 상당히 간단한 문제입니다. 해결할 수없는 문제입니다.동일한 스레드를 여러 번 사용하는 POSIX pthread
내 프로그램에 두 개의 스레드가 있습니다. 스레드는 정상적으로 실행되지만 문제를 일으키는 스레드를 재사용합니다. 의사 코드에서 다음 몇 가지 조건이 스레드 1에 충족 될 때
main() {
create thread 1;
create thread 2;
join thread 1;
}
thread 1 {
while true
if(some condition)
join thread 2
// Use the returned value from thread 2
}
thread 2 {
while true
if(some condition)
// do something
exit thread 2(with some return value to thread 1).
}
그래서, 난 그냥 잘 작동 당신이 일을 끝낼 전까지 termine 스레드 2로합니다. 스레드 2가 도달하여 스레드를 종료합니다. 그러나 스레드 1의 while 루프로 돌아와 다시 조건에 도달하면 다시 스레드 2를 다시 실행하려고합니다. 그것이 문제의 원인입니다. 스레드 2를 한 번 실행하면 스레드 1은 내 join 문을 무시하고 실행중인 유일한 스레드 인 while 루프에서 폴링 만합니다.
내 질문은. 어떻게하면 프로그램이 계속 실행되도록 join thread 2 속성을 재사용 할 수 있습니까?
* 다시 시작 * 2로 돌아가시겠습니까? 아니면 그 반품을 다시 사용 하시겠습니까? 후자의 경우 그냥 저장하고'join'을 호출하지 마십시오. 이전 버전 인 경우 조건을 재설정하고 스레드를 다시 시작하십시오. –
전 (前者)입니다. 스레드 2는 두 스레드간에 공유되는 변수를 변경합니다. 스레드 2를 재사용하고 싶습니다. 따라서 변수에 올바른 문이 있습니다. 스레드 1이 사용할 수 있습니다. 그래서 질문은, 어떻게 스레드를 다시 시작합니까? –