PthreadIntro
14/30 #include
#include
void sub(int *x){ sleep(1); // 1秒間スリープする printf(”child: %d\n”,*x); } int main(void){ int ii; pthread_t th; ii=123; pthread_create(&th, NULL, (void *)sub, (void *)&ii); pthread_join(th, NULL); return 0; }
【テロップ】
※各テロップ文字をクリックすると該当の場所がピンポイントで閲覧できます。
【ノート】
Pスレッドクリエイト関数はスレッドを新たに生成するときに用いられ、 4個の引き数を持ちます。 それぞれの引き数の書き方および意味ついて説明します。 最初の引き数はスレッドを区別するためのもので、下のプログラムのように、pスレッドアンダースコアtの型の変数へのポインタを設定します。アンド記号をつけてポインタにしていることに注意しましょう。 2番目の引き数には、生成したスレッドに適用するスレッド属性、すなわち、スケジューリングポリシーなどを 指定します。が、 この資料では常にヌルを与えますので、標準的な設定値を利用することにします。 3番目および4番目の引き数を用いて、生成したスレッドが実行する関数を指定します。すなわち、アーギュを第一引き数とするスタートルーチンという関数が生成したスレッドで最初に実行されることになります。下のプログラムの場合は、サブという関数がそれにあたり、引き数にはiiのポインタが与えられています。なお、第3引き数及び第4引き数の記載方法として、ボイドを使った複雑な書き方をしていますが、このように書くもとと理解しておいてください。 また、第4引き数、すなわち、スレッドで最初に実行される関数の引き数におけるのは、1個のみであることと、それはポインタ変数に限定されていることにも注意してください。 そこで、複数の引き数を指定したい場合は、複数の引き数をメンバーとする構造体を用い、そのポインタを引き数に設定することにします。