HevTaskSystem
HevTaskSystem is a simple, lightweight multi-task system (coroutines) for Unix.
The task system is executed by a Unix process/thread. In task system, you can creates many tasks and attachs to task system. When a task yield or blocked by I/O, the scheduler will pick a suitable task from running list and switch to. The memory space, file descriptors and other resources are shared for all tasks in task system. Every task has a private, standalone task structure (#HevTask) and stack in heap of the process.
In task, you can allocate memory from heap, read and write data from to stack, and do I/O operations in synchronized mode.
Features
- Simple/lightweight task.
- I/O operations wrapper.
- Inter-task synchronous. (Mutex/Condition)
- Inter-task communications. (Channel)
- Slice-based memory allocator.
- Call on new stack.
- Multi-thread support.
- Multi-platform support. (Linux/BSD/macOS)
How to Build
Unix:
git clone https://gitlab.com/hev/hev-task-system
cd hev-task-system
make
# Link with librt (only for glibc versions before 2.17)
make LDFLAGS=-lrt
# Disable multi-thread support
make ENABLE_PTHREAD=0
# Disable stack overflow detection
make ENABLE_STACK_OVERFLOW_DETECTION=0
# Disable sliced memory allocator
make ENABLE_MEMALLOC_SLICE=0
# Disable I/O splice by splice syscall (for old Linux kernel)
make ENABLE_IO_SPLICE_SYSCALL=0
# Demos
make apps
# Tests
make tests
Android:
mkdir hev-task-system
cd hev-task-system
git clone https://gitlab.com/hev/hev-task-system jni
ndk-build
Demos
Authors
- Heiher - https://hev.cc
License
LGPL