- Notifications
You must be signed in to change notification settings - Fork0
Portable Multiprocessing Library for C
License
nontan-rh/libaramid
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
libaramid is a multiprocessing library for C which employs the work-stealing algorithm, fork-join model, and task flow model.This library focuses on portability and usability in real-world applications.
- Largely compliant with C99 (but a few unavoidable intrinsics)
- Abstracting underlying thread APIs
- Independent of ABI specifics
- Tested on a bunch of environments (including real smartphone devices and Webassembly)
- Error handling API
- Various ways to synchronization
- Custom scheduling
- Capability to use from other languages
Tested platforms and toolchain
OS | CPU | Compiler | Note |
---|---|---|---|
Linux | x64 | Clang | Verified using ASAN |
macOS | x64 | AppleClang | Verified using ASAN |
Windows | x64 | MSVC | |
MinGW | |||
iOS | ARMv8 | AppleClang | Build only (automatic test planned) |
Android | ARMv8 | GCC | |
WASM | - | Emscripten | Tested on Headless Chrome |
NOTE: Android NDK can utilize CMake and it requiresNinja
You can useExternalProject
to add to your project.SeeCMake Documentationif you don't know how to use the feature.
cmake_minimum_required(VERSION 3.10.2)ExternalProject_Add(libaramid GIT_REPOSITORY https://github.com/nontan-rh/libaramid.git GIT_TAG master GIT_SHALLOWON SOURCE_DIR"${CMAKE_CURRENT_BINARY_DIR}/libaramid-src" BINARY_DIR"${CMAKE_CURRENT_BINARY_DIR}/libaramid-build" CONFIGURE_COMMAND"" BUILD_COMMAND"" INSTALL_COMMAND"" TEST_COMMAND"")target_link_libraries(<your_target> aramid)
NOTE: You needcmake in addition to Xcode and Carthage.
github "nontan-rh/libaramid"
NOTE: In-source build is disabled
$ mkdir -p build&&cd build$ cmake .. -DCMAKE_BUILD_TYPE=Debug$ cmake --build.# for Linux, macOS, Windows$ ctest# for Wasm$ python3 -m http.server --directory test_executable 8080# -> then visit localhost:8080
Openetc/android/TestProject
as a project with AndroidStudio
Openetc/ios/libaramid/libaramid.xcodeproj
with Xcode
Build scripts or test drivers in this repository include some third-party software.
Project | License | URL |
---|---|---|
ios-cmake | BSD-3-Clause | https://github.com/leetal/ios-cmake |
googletest | BSD-3-Clause | https://github.com/google/googletest |
google-toolbox-for-mac | Apache-2.0 | https://github.com/google/google-toolbox-for-mac |
Package managers also fetch some third-party software. Checkbuild.gradle
andpackage.json
.
About
Portable Multiprocessing Library for C