我下面有個問題。一旦我們發出了一個條件變量的信號,我們會繼續執行原始線程嗎?
Process A Process B
int A = 0; int B = 0;
pthread_mutex_lock(&mutex);
while (condition == FALSE)
pthread_cond_wait(&cond, &mutex);
pthread_mutex_lock(&mutex);
condition = TRUE;
pthread_cond_signal(&cond);
pthread_mutex_unlock((&mutex)
A += 10; B += 10;
我的問題是,如果過程B有其它的說明,例如:INT B + = 10 ;,
乙將執行B + = 10立即或A將採取控制否則?
是的,B進程是繼續執行還是A將被喚醒&取得控制權?
例如,B + = 10會先於A + = 10還是反之?
未指定的行爲。沒有競賽條件。 – rici 2015-03-02 06:26:11
@rici好吧,可能是'未說明'在這裏是更合適的術語,但無論如何它是邪惡的。 – Matt 2015-03-02 06:30:21
爲什麼它是邪惡的?這是多處理。試圖猜測哪個線程是活動的是不明智的,但是有兩個線程同時執行不相關的計算是多線程的本質。 – rici 2015-03-02 06:31:20