问题很简单。 是否/应该在多线程中使用的变量是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