2011-04-18 1 views
0

-> iphone 응용 프로그램을 만들고 있습니다. -> 배경에 스레드 수가 많은 시나리오가 있습니다.모든 스레드를 잠자기 상태로 만드는 방법 - iphone

-> 이제 주 스레드에서 이벤트를 수신하여 새 백그라운드 스레드에서 일부 작업을 실행해야한다고 가정합니다.

->하지만 그 시간에 새 백그라운드 스레드에서 일부 작업을 수행 할 때 다른 모든 스레드는 작업이 완료 될 때까지 일시 중지/대기해야합니다.

-> 일단 작업이 끝나면 다른 모든 스레드는 작업을 다시 시작해야합니다.

나는 이것에 관해 더 많은 것을 탐구 할 것이지만 만약에 어떤 아이디어가 있다면 약간의 의견을 제공해주십시오.

감사

+0

이 가지고이를 설정할 때, 이제 깃발처럼 가정 해 봅시다 네이티브 C 스레드를 사용하는 것이 좋습니다하거나 모든 스레드 사이에 공유 객체에 대한 생각이 : 조건 팅 현재의 플래그에의 출현 모든 작업 스레드는이 오브젝트에 대한 다른 세트까지 보유하고 있습니까? 나는이 메커니즘을 C#에서 다시 사용했다. –

+0

당신이하고 싶은 것을 더 자세하게 설명 할 수 있습니까? 백그라운드 스레드는 무엇을하고 있습니까? 왜 그들은 멈춰야합니까? 지금까지 제안 된 것보다 쉬운 솔루션이있을 수 있습니다. – kubi

답변

0

일반적으로 동기화하는 뮤텍스를 사용하여 pthread와 조건을 사용하여 수행과 같이 할 수 신호 :

작성 뮤텍스와 조건 변수 :

pthread_mutex_init(&mutex, NULL); 
    pthread_cond_init(&cond, NULL); 

스레드 1 : 신호 기다립니다 :

pthread_cond_wait(&cond, &mutex); 

스레드 2 : 스레드 wai 신호

당신은 내 대답을 수정 제거한하고
pthread_mutex_lock(&mutex); 
    pthread_cond_signal(&cond); 
    pthread_mutex_unlock(&mutex);