記事のディレクトリ
スレッド
プロセスを学習した後、我々はプロセスがリソース割り当ての最小単位で学び、スレッドスケジューリングの最小単位である次のように、異なるプロセスに比べスレッドは以下のとおりです。
- 1.プロセスは、別個のアドレス空間、コードセグメント、データセグメント、スタックセグメント、及び唯一の独立したスレッドのスタック・セグメントを有しています。
- 通常、スレッド間通信を介して、種々の方法2.プロセス間通信は、データ伝送のためのものであるグローバル変数またはスレッドを作成することです。
- データのほとんどを共有している各スレッドに対して同じプロセスに3ラン。
- それはプロセスのスペースを作成するために要するスペースよりもはるかに小さい費やしスレッドを作成します。4.。
- スレッド間のスイッチング時間ははるかに少ないプロセスのスイッチング時間よりもあります。
- スレッド間で共有されるデータ以来6、スレッド間のので、より便利な通信。
- コピー処理7.fork作成プログラム、および、作成したときにスレッドが関数を呼び出すことです
スレッドを作成します。
メインスレッドは、関数を使用して作成されたpthread_create()
ライブラリに含まれる機能は、pthread.h
プログラミングはそう呼ばれるように、だけでなく、コンパイル段階では、最後のリンクを追加する:-lpthread
なぜならgccのCライブラリデフォルトでは、そうすべきであるpthread.h
リンクアップ。
関数のプロトタイプは次のとおりです。
int pthread_create( pthread_t *restict thread,
const pthread_attr_t *restric attr,
void *( *start_routine )( void* ),
void *restrict arg );
ルックスはそれほど頻繁にプログラムで使用される、不明瞭:
error = pthread_create( &tid, NULL, ( void* )thread, ( void* )arg );
説明:
- 最初の引数は:スレッドを作成するためにIDを受け取り、TID
- 二番目のパラメータ:スレッドは、プロパティを設定するために使用され、それは一般的にNULLに設定されています
- 第三引数:スレッド関数の実行の開始アドレスは、人気の話はあなたが取り組むことができるように、単にポインタ型があり、呼び出されるスレッド関数であります
- 第四パラメータ:スレッド関数呼び出しパラメータ
多くの場合、スレッドを作成するプログラムのコードのこの部分を使用します。
error = pthread_create( &tid, NULL, ( void* )thread, NULL );
if( error )
{
printf("thread can not create!\n");
return -1;
}
説明:あなたは正常に作成するとき、それは0を返し、スレッドを作成するための関数を呼び出すとき、我々は成功を作成するために、その戻り値の大きさに応じて判断して、あなたは、他の値を返し、失敗します。