pthread_create関数 機能紹介 pthread_createはUNIX環境のスレッド作成関数である。 ヘッダーファイル #include<pthread.h> 関数宣言 int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg); 戻り値 成功した場合は0を返し、そうでない場合はエラー番号を返します。 パラメータ 最初のパラメータはスレッド識別子へのポインタです。 2 番目のパラメータはスレッド属性を設定するために使用されます。 3 番目のパラメーターは、スレッドが実行する関数のアドレスです。 最後の引数は関数を実行するためのパラメータです。 知らせ コンパイルするときは、静的リンク ライブラリを呼び出すために -lpthread パラメータを追加することを忘れないでください。 pthread は Linux システムのデフォルト ライブラリではないためです。 pthread_join 関数 機能紹介 関数 pthread_join は、スレッドの終了を待機するために使用されます。 関数のプロトタイプは次のとおりです。 外部 int pthread_join __P (pthread_t __th、void **__thread_return); パラメータ: 最初のパラメータは待機中のスレッド識別子です。 2 番目のパラメーターは、待機中のスレッドの戻り値を格納するために使用できるユーザー定義のポインターです。 知らせ この関数はスレッド ブロッキング関数です。この関数を呼び出す関数は、待機中のスレッドが終了するまで待機します。関数が戻ると、待機中のスレッドのリソースが再利用されます。実行が成功した場合は 0 を返し、失敗した場合はエラー番号を返します。 例: #include <stdio.h> #include<stdlib.h> #include<pthread.h> /*構造体を宣言する*/ 構造体メンバー { 整数 数値; char *名前; }; /* スレッド pthread を定義する */ 静的 void * pthread(void *arg) { 構造体メンバー *temp; /* スレッド pthread の実行が開始されます */ printf("pthread を開始!\n"); /* メインスレッドの実行を継続する */ 睡眠(2); /* 渡されたパラメータを出力します */ temp = (構造体メンバー *)arg; printf("member->num:%d\n",temp->num); printf("member->name:%s\n",temp->name); NULL を返します。 } /* メイン関数 */ int main(int agrc,char* argv[]) { pthread_t tidp; 構造体メンバー *b; /* 構造体変数 b に値を割り当てる*/ b = (構造体メンバー *)malloc(sizeof(構造体メンバー)); 数値は1です。 b->名前="mlq"; /* スレッド pthread を作成する */ ((pthread_create(&tidp, NULL, pthread, (void*)b)) == -1)の場合 { printf("作成エラー!\n"); 1 を返します。 } /* スレッド pthread を最初に実行します */ 睡眠(1); /* スレッド pthread は 2 秒間スリープし、その後 main を最初に実行できます */ printf("mian 継続します!\n"); /* スレッド pthread が解放されるのを待機中*/ (pthread_join(tidp, NULL) の場合) { printf("スレッドは終了していません...\n"); -2 を返します。 } 0を返します。 } コンパイルと実行結果 コンパイルと実行の結果は下図のようになります。メインスレッド main とスレッド pthread が交互に実行されていることがわかります。つまり、スレッド pthread を作成した後、両方のスレッドが実行され、作成が成功したことが証明されました。さらに、スレッド pthread が作成されると、渡されたパラメータが正しく印刷されることがわかります。 Linux でスレッドを作成するための pthread_create の具体的な使用法に関するこの記事はこれで終わりです。Linux pthread_create に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: フロントエンドは画像を遅延ロードする方法を知っている必要があります(3つの方法)
目次MySQL 切り捨ての使用1. 構文を切り捨てる2. Truncateの使用上の注意3. TRU...
ドロップダウン付きのテキストボックスを使用すると、ユーザーはドロップダウン リストから入力を選択した...
1. はじめにtr はテキストの一部を変換または削除するために使用されます。 tr は transl...
まず、Docker がインストールされたサーバーが必要です。 (私はすでにこれをサーバーにインストー...
このブログのすべてのコンテンツは、クリエイティブ コモンズ ライセンスの下でライセンスされています。...
MySQL のログには、エラー ログ、バイナリ ログ、一般クエリ ログ、スロー クエリ ログなどが含...
1. はじめにNginx は、無料のオープンソースの高性能 HTTP サーバーおよびリバース プロキ...
タブ切り替えもプロジェクトではよく使われる技術です。一般的にタブ切り替えはjsやjqを使って実装され...
Ubuntu 20.04 をインストールした後、デフォルトでは root アカウントのログイン権限が...
目次1. tomcatの起源1. Tomcat アプリケーションのシナリオ2. Tomcatに必要な...
図に示すように: テーブルデータこのようなツリーの場合、「Gao Yinrui」の下のすべてのノード...
例示するこの記事は、2017 年 5 月 20 日に MySQL-5.7.18 を使用して作成されま...
CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があ...
フロートの定義要素を通常のドキュメント フローから外し、要素を左または右に近づけます。親要素の端...
1. Flashプラグインパッケージのダウンロードアドレス: https://get.adobe.c...