NeiNeigh's blog

覚書のようなブログ.PC・アプリケーション・プログラミング・オーディオ・アニメ

C言語でマルチスレッドプログラミング

Cでマルチスレッドプログラミングする必要性がでてきたので,それについて調査.

pthread

マルチスレッドするならこのPOSIXのライブラリを使うのが普通っぽい.
memcachedはこのpthreadとlibeventで,コネクションをスレッドに振り分けてるんだと思う.

pthreadの使い方については,ここがよくまとめられている.
http://docs.oracle.com/cd/E19455-01/806-2732/6jbu8v6oi/index.html#tlib-79569

基本的には,これでスレッド生成する.

int pthread_create(pthread_t *tid, const pthread_attr_t *tattr,
    void*(*start_routine)(void *), void *arg); 
  • 第1引数のtidにはスレッドIDが格納される.
  • 第2引数で属性を指定する.この属性でスレッドの優先順位・スケジューリングを変えることができる.他にもスタック・サイズやスレッドグループなどの機能も使うことができる.
  • 第3引数には,スレッド化する処理(関数)を指定する.
  • 第4引数には,第3引数で与えた関数の引数を指定する(んだと思う).