foo
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
#include <zinnia/refcount.h>
|
||||
#include <stdatomic.h>
|
||||
|
||||
void refcount_init(struct refcount* rc) {
|
||||
atomic_store_explicit(&rc->count, 1, memory_order_relaxed);
|
||||
}
|
||||
|
||||
void refcount_inc(struct refcount* rc) {
|
||||
atomic_fetch_add_explicit(&rc->count, 1, memory_order_relaxed);
|
||||
}
|
||||
|
||||
bool refcount_dec(struct refcount* rc) {
|
||||
if (atomic_fetch_sub_explicit(&rc->count, 1, memory_order_release) != 1)
|
||||
return false;
|
||||
atomic_thread_fence(memory_order_acquire);
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user