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引数で与えた関数の引数を指定する(んだと思う).