看到「libdill: Structured Concurrency for C」這個東西,在 C 裡實作了兩個不同種類的 concurrency,一個是 proc (process-based) 一個是 go (corouting-based)。
支援的 function 算是蠻清晰的,範例也很清楚:
#include <libdill.h> #include <stdio.h> #include <stdlib.h> coroutine int worker(const char *text) { while(1) { printf("%s\n", text); msleep(now() + random() % 500); } return 0; } int main() { go(worker("Hello!")); go(worker("World!")); msleep(now() + 5000); return 0; }
也有 channel 的觀念可以用,之後需要寫玩具的話應該是個好東西...