次のように2つのスレッドが実行されています。このコードはiPhoneシミュレータでは機能しますが、デバイスでは機能しません。 iPhone(ios 5.1が稼動している)では、スレッドAはスレッドBの状態で信号を無期限に待機しています。スレッドAでiPhone - 待ち状態のスレッドのスレッドを解除していないスレッド状態信号
データを処理する準備ができている:スレッドBで
pthread_mutex_lock(&mutex);
outstandingSig++;
pthread_cond_signal(&condVar);
pthread_mutex_unlock(&mutex);
:
while(1)
{
pthread_mutex_lock(&mutex);
while(outstandingSig == 0)
{
pthread_cond_wait(&condVar, &mutex);
}
outstandingSig = 0; //Reset outstanding signals
pthread_mutex_unlock(&mutex);
// process data
}
それは、デバイス上で異なる動作をする理由だ任意の提案ですか?スレッドBが信号を消費しない原因は何ですか?そして、なぜシミュレータとデバイスの動作が違うのですか?
をlibsystem_c.dylib'pthread_cond_wait助けました。あなたのために働くことを願っています。あなたが別の解決策に出くわしたら、投稿してください – user1368045