name mode size
.mulle 040000
cmake 040000
dox 040000
run-on-ipad 040000
src 040000
test 040000
.gitignore 100644 590B
.travis.yml 100644 592B
CMakeLists.txt 100644 1.02kB
LICENSE 100644 1.76kB 100644 2.54kB 100644 4.42kB
mulle-thread.sublime-project 100644 219B
# mulle-thread 🔠 Cross-platform thread/mutex/tss/atomic operations in C **mulle-thread** is a set of **C** wrapper headers for a simplified subset of thread functions and for a limited range of atomic operations that strongly mimics the thread standard, even if thread is not available. On Windows it has to do a bit more work. mulle-threads main advantages are **simplicity**, **portability**, **sanity**. * basic atomic operations CAS, ++, -- on void pointers. * basic thread operations * mutex functionality * thread local storage, with proper destruction Since thread has `<stdatomic.h>` and `<threads.h>`, eventually this project could become superflous. In the meantime though it's a convenient abstraction on threads and atomic operations. Build Status | Release Version -------------|----------------------------------- [![Build Status](]( | ![Mulle kybernetiK tag]( [![Build Status](]( ## Install Install the prerequisites first: | Prerequisites | |-----------------------------------------------| | [mulle-c11](// | Then build and install ``` mkdir build 2> /dev/null ( cd build ; cmake .. ; make install ) ``` Or let [mulle-sde](// build it for you with `mulle-sde craft`. ## API * [Atomic Operations](dox/ * [Threads](dox/ * [Mutex](dox/ * [Thread Local Storage](dox/ ### Platforms * OS X * iOS * Linux * FreeBSD * Windows ### Compilers * clang * gcc * MSVC > thread support in clang as of v3.8 is lacking, as there is no `<threads.h>`. > The fallback is **pthreads**. ### Architectures If `<stdatomic.h>` is not available for your architecture, then **mulle-thread** is limited to: * x86 * x86_64 * arm That is because of [mintomic](// limitations. **mintomic** is the original source for the provided atomic operations. Unfortunately it's not really active anymore, so for example ARM64 doesn't work. **mulle-thread** will use mintomic only, if `<stdatomic.h>` is not available. ## Author [Nat!](// for [Mulle kybernetiK](// and [Codeon GmbH](//