タグ

Cとlibtaskに関するyukimori_726のブックマーク (2)

  • libtaskとPthreadの比較 - Plan9日記

    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日記
  • 軽量ユーザスレッドを実現するlibtaskを試してみた。 - moriyoshiの日記

    libtask。コルーチンとスケジューラがセットになっているのか。 #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include "task.h" typedef int err_t; typedef struct { char *name; } my_task_t; void my_task_run(my_task_t *ctx) { printf("Hi, I am a lightweight task %s (id=%d)\n", ctx->name, taskid()); for (int i = 0; i < 3; ++i) { printf("You see %s is just doing well man!\n", ctx->name); taskyield()

    軽量ユーザスレッドを実現するlibtaskを試してみた。 - moriyoshiの日記
  • 1