Linux でスレッドを作成するための pthread_create の具体的な使用法

Linux でスレッドを作成するための pthread_create の具体的な使用法

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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • pthread_create、readlink、getpidなどの関数に基づく研究と要約
  • ''pthread_create'' への未定義参照の解決策
  • C言語 pthread_create() 関数の説明

<<:  MySQLにおける正規表現の一般的な使用法

>>:  フロントエンドは画像を遅延ロードする方法を知っている必要があります(3つの方法)

推薦する

自作の Windows サーバーに egg アプリケーションを展開する方法 (画像とテキスト付き)

1. IEブラウザを使用してVPNにログインする 2. リモートログイン 3. サーバーに最新のn...

mysqldumpデータエクスポートの問題に関する詳細な議論

1. mysqldump の使用時にエラー (1064) が報告されます。これは、mysqldump...

画像ボタン送信とフォーム繰り返し送信の問題に関する議論

多くの場合、フォームを美しくするために、送信ボタンが画像に置き換えられます。ただし、細部に注意を払わ...

CSS3 で半透明の背景画像と不透明なコンテンツを実現する方法の例

以前のブログのログインページを作成していたときに、この問題に遭遇しました。突然、透明な背景画像と不透...

Vueコンポーネントドキュメント生成ツールライブラリのメソッド

目次.vue ファイルの解析文書情報を抽出するコンポーネント名、説明、プロパティ、メソッド、モデルを...

ゲーム開発におけるサウンド処理にCocosCreatorを使用する方法

目次1. Cocos Creatorでのオーディオ再生の基本1. 基本2. 一般的な方法2. Coc...

画像の色を変更するための純粋なCSS

画像の色を変更するための CSS テクニックは非常にシンプルです。具体的なコードは次のとおりです。ヒ...

HTMLにおける絶対パスと相対パスの違いの分析

図に示すように: 1 つのページには多数のファイルが接続されているため、ファイルを参照するときには、...

W3C チュートリアル (2): W3C プログラム

W3C 標準化プロセスは 7 つの異なるステップに分かれています。 W3C 標準化プロセスは 7 つ...

dockerカスタムイメージでphp7をビルドする方法

まず、簡単な Docker インストールを実行します。イメージをカスタマイズするには、ベースイメージ...

DockerでRedashの中国語版をデプロイしてインストールする方法の詳細な説明

1. インストール手順 Linux 環境でのローカル インストールと比較すると、Docker のイン...

Node.js を使用してパスワード ジェネレータを作成するための完全な手順

目次1. 準備2. コマンドラインの記述2.1 バージョンと説明を追加する2.2 パスワードの長さを...

JavaScriptはスクロールバーの位置を取得し、ページをアンカーポイントまでスライドします。

序文この記事は、私が最近仕事で遭遇した問題を記録したものです。アプリネイティブとフロントエンドのh5...

MySQL におけるデフォルトの使用法の詳細な説明

NULL および NOT NULL 修飾子、DEFAULT 修飾子、AUTO_INCREMENT 修...

Tomcatを自動的に開始するサービスとして設定するにはどうすればいいでしょうか?最も簡単な方法

Tomcat が自動的にサービスを開始するように設定します。最近、問題が発生しました。サーバー上のプ...