Russ Coxさんが作ったコルーチンライブラリlibtaskを試してみた。雰囲気はPlan9のlibthreadによく似ている。対応している環境は、Linux (ARM and x86)、FreeBSD (x86)、OS X (PowerPC and x86)、SunOS Solaris (Sparc)とのことだ。 コルーチンはプログラマが明示的にタスクの切り替えを記述する必要があり(プリエンプトされない)、スレッドとはモデルが違うが、より軽量な仕組みである。Pthreadは通常ユーザスレッドとカーネルスレッドが1:1に対応付けられるのに対して、コルーチンは完全にユーザレベルでの実装であり、1つのカーネルスレッド上で動く。どれくらい性能が違うのかなと思い、まずpthread_createとtaskcreateを比較するベンチマークを書いてみた。1〜1000個のスレッド(タスク)を生成する
![libtaskとPthreadの比較 - Plan9日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/14a34cd9c49fb70eb1ea0d9fd7c70ba4b9ee4ab3/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Foraccha%2F20080816%2F20080816110136.png)