2
#include <stdatomic.h>
void request_number(request_t *request)
{
static atomic_int counter;
request->id = atomic_fetch_add_explicit(&counter, 1, memory_order_relaxed);
printf("Request assigned ID %u\n" request->id);
}
计数器在上述C段,我认为这是确定使用memory_order_relaxed
,因为即使没有内存围栏编译器不会调用重新安排printf
和request->id
取的前门店值为request->id
。创建具有atomic_fetch_add_explicit
这是正确的吗?我相当肯定它是如此,但是如果还有其他的东西需要考虑到原子的话,我想要绝对确定。