mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-03-14 15:50:12 +01:00
git-subtree-dir: libco git-subtree-mainline: c5b39e2dfcc05998eefc606b967c0e52cc5c0ad3 git-subtree-split: 7871e50f7d48444f1a6333128308acb0a1c8ad2b
libco
libco is a cooperative multithreading library written in C89.
Although cooperative multithreading is limited to a single CPU core, it scales substantially better than preemptive multithreading.
For applications that need 100,000 or more context switches per second, the kernel overhead involved in preemptive multithreading can end up becoming the bottleneck in the application. libco can easily scale to 10,000,000 or more context switches per second.
Ideal use cases include servers (HTTP, RDBMS) and emulators (CPU cores, etc.)
It currently includes backends for:
- x86 CPUs
- amd64 CPUs
- PowerPC CPUs
- PowerPC64 ELFv1 CPUs
- PowerPC64 ELFv2 CPUs
- ARM 32-bit CPUs
- ARM 64-bit (AArch64) CPUs
- POSIX platforms (setjmp)
- Windows platforms (fibers)
License
libco is released under the ISC license.