19 list->dummy_node.next =
NULL;
20 list->head = list->tail = &list->dummy_node;
28 while (node !=
NULL) {
55 tail_node = list->tail;
60 }
while (keep_working);
66 return list->head->
next;
void BLI_linklist_lockfree_free(LockfreeLinkList *list, LockfreeeLinkNodeFreeFP free_func)
LockfreeLinkNode * BLI_linklist_lockfree_begin(LockfreeLinkList *list)
void BLI_linklist_lockfree_clear(LockfreeLinkList *list, LockfreeeLinkNodeFreeFP free_func)
void BLI_linklist_lockfree_insert(LockfreeLinkList *list, LockfreeLinkNode *node)
void BLI_linklist_lockfree_init(LockfreeLinkList *list)
void(* LockfreeeLinkNodeFreeFP)(void *link)
Read Guarded memory(de)allocation.
Provides wrapper around system-specific atomic primitives, and some extensions (faked-atomic operatio...
ATOMIC_INLINE void * atomic_cas_ptr(void **v, void *old, void *_new)
static PyObject * free_func(PyObject *, PyObject *value)
struct LockfreeLinkNode * next