Skip to content
/ ago Public
forked from anj1/ago

Portable lightweight goroutine-like threads for C

License

Notifications You must be signed in to change notification settings

acecil/ago

 
 

Repository files navigation

This is a C++11 implementation by Andrew Gascoyne-Cecil of the ago repo created by Alireza Nejati.

The example compiles and runs with gcc-4.7 on Ubuntu, and VS2012 RC.

The README from the C original C implementation is below:

For a quick example on how to use this, see ago_test.c.

I am aware that there are multiple implementations out there that try to do this. Mine is different, however:

- It's lightweight, providing only the base functionality needed for goroutine-like functions. There is no message passing, just function creation. I might add message-passing in the future.

- It's so lightweight you can (and should) directly include the source, without compiling a separate library.

- It is all POSIX threads so it's portable. There are no busy-wait loops or anything. If you don't have unistd.h on your system, just comment it out and remove the usleep(). The only thing that *might* change is increased CPU usage.

- I took great care for there to be no race conditions, but with multithreading you never really know. Please tell me about any bugs you find.

By the way, the reason there's an alib_ before everything is that this was originally part of my own custom C extension library, Alib. I might release the full library in the future.

About

Portable lightweight goroutine-like threads for C

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 100.0%