タグ

linuxとthreadに関するtztのブックマーク (6)

  • マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー

    また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ

    マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー
  • 2007-03-23

    明日は午前中に起きないといけない。多分無理。(諦めるのがはやい) というわけで、非同期リクエスト-レスポンスについて考える、つもりだったのだけど、なんかfutexというのを見てたので、そこらへんの話。 futexというのは、Linux で pthread の conditional variable を実装するための機能 + αといったところだろうか。 簡単な使いかたは↓こんな感じ。 #include <time.h> #include <pthread.h> #include <stdio.h> #include <asm/unistd.h> #include <errno.h> #define FUTEX_WAIT 0 #define FUTEX_WAKE 1 static inline long futex( volatile void *a, int op, int v, stru

    2007-03-23
  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • Manpage of SCHED_SETSCHEDULER

    SCHED_SETSCHEDULER Section: Linux Programmer's Manual (2) Updated: 2008-09-05 Index JM Home Page roff page 名前 sched_setscheduler, sched_getscheduler - スケジューリング・ポリシーとパラメータを設定/取得する 書式 #include <sched.h> int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param); int sched_getscheduler(pid_t pid); struct sched_param { ... int sched_priority; ... }; 説明 sched_setscheduler() は pid で指

  • Manpage of SCHED_RR_GET_INTERVAL

  • Manpage of SCHED_YIELD

    Section: Linux Programmer's Manual (2) Updated: 1996-04-10 Index JM Home Page roff page 名前 sched_yield - プロセッサーを空け渡す(yield) 書式 #include <sched.h> int sched_yield(void); 説明 sched_yield() を呼び出すことによって中断(block)することなしに、 プロセスが自発的にプロセッサー(processor)の使用をやめることができる。 プロセスはその静的プライオリティのキュー(queue)の最後に 移動し、新しいプロセスが走り始める。 注意: もしその時点の最大優先度のリストの中に呼び出し元のプロセスしか 存在しなければ、そのプロセスは sched_yield() を呼び出した後も走り続けるだろう。 POSIX システ

  • 1