3
我有兩個線程運行如下。該代碼在iPhone模擬器上完美工作,但不在設備上。在iPhone上(有ios 5.1運行)的線程A條件的信號,但線程B無限期地等待條件。iPhone - 線程狀態信號沒有解除阻塞等待線程
在線程A在數據準備好進行處理:
pthread_mutex_lock(&mutex);
outstandingSig++;
pthread_cond_signal(&condVar);
pthread_mutex_unlock(&mutex);
在線程B:
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不消耗信號?以及爲什麼模擬器和設備上的不同行爲?
調試器更改爲GDB幫助。希望對你有效。如果您確實遇到另一種解決方案,請發帖 – user1368045