【发布时间】:2020-06-09 08:35:44
【问题描述】:
想象以下用例:
static atomic_t ref_counter = ATOMIC_INIT(0);
void incref(void) {
if (atomic_inc_return(&ref_counter) == 1) {
// init my stuff
}
}
void decref(void) {
if (atomic_dec_return(&ref_counter) == 0) {
// release my stuff
}
}
如果两个线程同时调用incref(),则保证ref_counter 在两次调用后都有2 的值。
但是原子执行是否也适用于返回值?我的意思是,我们是否保证其中一个线程将返回1,而第二个线程返回2?或者他们都可能返回1?
【问题讨论】:
标签: c linux-kernel