A lightweight, cross-platform spinlock implementation for multithreading in C.
-
Works on x86, x64, ARM, ARM64
-
Supports MSVC and GCC/Clang
-
Uses CPU-friendly pause/yield to reduce busy-wait overhead
-
Simple API:
init,try_acquire,acquire,release
#include <spnlck/spnlck.h>
#include <stdio.h>
int main() {
spnlck lock;
spnlck_init(&lock);
spnlck_acquire(&lock);
printf("Critical section!\n");
spnlck_release(&lock);
return 0;
}spnlck_init(l) Initialize the spinlock
spnlck_try_acquire(l) Try to acquire without blocking
spnlck_acquire(l) Acquire and block until available
spnlck_release(l) release the lock
MIT