Blender V4.3
BLI_linklist_lockfree.c File Reference
#include "MEM_guardedalloc.h"
#include "BLI_linklist_lockfree.h"
#include "atomic_ops.h"
#include "BLI_strict_flags.h"

Go to the source code of this file.

Functions

void BLI_linklist_lockfree_init (LockfreeLinkList *list)
 
void BLI_linklist_lockfree_free (LockfreeLinkList *list, LockfreeeLinkNodeFreeFP free_func)
 
void BLI_linklist_lockfree_clear (LockfreeLinkList *list, LockfreeeLinkNodeFreeFP free_func)
 
void BLI_linklist_lockfree_insert (LockfreeLinkList *list, LockfreeLinkNode *node)
 
LockfreeLinkNodeBLI_linklist_lockfree_begin (LockfreeLinkList *list)
 

Function Documentation

◆ BLI_linklist_lockfree_begin()

LockfreeLinkNode * BLI_linklist_lockfree_begin ( LockfreeLinkList * list)

Begin iteration of lock-free linked list, starting with a first user=defined node. Will ignore the dummy node.

Definition at line 64 of file BLI_linklist_lockfree.c.

References LockfreeLinkNode::next.

Referenced by BKE_icons_deferred_free(), TEST(), and TEST().

◆ BLI_linklist_lockfree_clear()

void BLI_linklist_lockfree_clear ( LockfreeLinkList * list,
LockfreeeLinkNodeFreeFP free_func )

Remove all the elements from the list, keep it usable for further inserts.

Definition at line 36 of file BLI_linklist_lockfree.c.

References BLI_linklist_lockfree_free(), BLI_linklist_lockfree_init(), and free_func().

Referenced by BKE_icons_deferred_free().

◆ BLI_linklist_lockfree_free()

void BLI_linklist_lockfree_free ( LockfreeLinkList * list,
LockfreeeLinkNodeFreeFP free_func )

Completely free the whole list, it is NOT re-usable after this.

Definition at line 23 of file BLI_linklist_lockfree.c.

References free_func(), LockfreeLinkNode::next, and NULL.

Referenced by BKE_icons_free(), BLI_linklist_lockfree_clear(), TEST(), TEST(), TEST(), and TEST().

◆ BLI_linklist_lockfree_init()

void BLI_linklist_lockfree_init ( LockfreeLinkList * list)

Make list ready for lock-free access.

Definition at line 17 of file BLI_linklist_lockfree.c.

References NULL.

Referenced by BKE_icons_init(), BLI_linklist_lockfree_clear(), TEST(), TEST(), TEST(), and TEST().

◆ BLI_linklist_lockfree_insert()

void BLI_linklist_lockfree_insert ( LockfreeLinkList * list,
LockfreeLinkNode * node )

Definition at line 42 of file BLI_linklist_lockfree.c.

References atomic_cas_ptr(), LockfreeLinkNode::next, and NULL.

Referenced by icon_add_to_deferred_delete_queue(), TEST(), and TEST().