Tim Allen 0ab0ab6957 Merge commit '5e109224fb3480d806e44d74587d052c7f88bf83' into master 4 yıl önce
..
doc d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
LICENSE d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
README.md d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
aarch64.c d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
amd64.c d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
arm.c d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
fiber.c 0ab0ab6957 Merge commit '5e109224fb3480d806e44d74587d052c7f88bf83' into master 4 yıl önce
libco.c d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
libco.h d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
ppc.c d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
ppc64v2.c 0ab0ab6957 Merge commit '5e109224fb3480d806e44d74587d052c7f88bf83' into master 4 yıl önce
settings.h 0ab0ab6957 Merge commit '5e109224fb3480d806e44d74587d052c7f88bf83' into master 4 yıl önce
sjlj.c d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
ucontext.c d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce
x86.c d72874fa59 Merge libco repository's commit 'd31c6e75a54be12307d65fd80f55adfbe7aa9d67' into master 4 yıl önce

README.md

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)

See [doc/targets.md] for details.

See [doc/usage.md] for documentation.

License

libco is released under the ISC license.