問題很簡單。 是否/應該在多線程中使用的變量是volatile
,甚至在C中的關鍵部分(即互斥量,信號量)中被訪問?爲什麼/爲什麼不?帶互斥量和信號量的volatile關鍵字
#include <pthread.h>
volatile int account_balance;
pthread_mutex_t flag = PTHREAD_MUTEX_INITIALIZER;
void debit(int amount) {
pthread_mutex_lock(&flag);
account_balance -= amount;//Inside critical section
pthread_mutex_unlock(&flag);
}
這個例子或等價的信號量思考怎麼樣?
https://stackoverflow.com/a/78221/635608 – Mat
爲什麼/爲什麼不呢? @Mat – concurrencyboy
你想讓我重新鍵入英特爾在這裏鏈接的文章嗎?或重新輸入其他答案? – Mat