スレッドの停止

時には、スレッド内の別のスレッドを作成し、メインスレッドは、スレッドの作成の復帰まで待機するサスペンションをスレッドする必要性に、終了後にこの時間は、スレッドの戻り値をキャプチャします。

 

int型pthread_joinを(がpthread_t番目のボイド** thr_return)。

pthread_joinを関数は、指定されたスレッドが終了番目まで、現在のスレッドを一時停止過ごしました。

/ * ** 
hangup.c 
** * / 
書式#include <stdio.hに> 
する#include <pthread.hの> 
の#include <ERRNO.H> 
書式#include < 文字列の.h> 
の#include <stdlib.h>に含まれ、ボイド * FUNC(ボイド *の引数)
{ int型私= 0 ;
    (; iは< 5 ; iは++ 
    { 
        のprintf(" FUNCラン%Dを\ n " 、I)。
        睡眠(1 )。
    } INT * P =(INT *)のmalloc(


    
    sizeofint型));
    * P = 11 リターンのp; 
} 

int型のmain()
{ 
    がpthread_t T1。
    INT ERR =のpthread_create(&T1、NULL、FUNC、NULL);
    もし0!= ERR)
    { 
        のprintf(" thread_createはfailled:%S \ nを" 、はstrerror(errnoに))。
    } 
    
    { 
        のprintf(" thread_create成功する\ n " ); 
    } 
    ボイド *はP = NULL; 
    pthread_joinを(T1、 P); 
    printf(" 糸出口:コード=%d個の\ n "、*(INT * )P);
    戻りEXIT_SUCCESS; 
}

結果:

exbotする@ Ubuntuの:〜/ wangqinghe /スレッド/ 20190729 $ gccのhangup.c -oハングアップ-lpthread

exbotする@ Ubuntuの:〜/ wangqinghe /スレッド/ 20190729 $ ./hangup

thread_create成功

FUNCラン0

FUNCラン1

FUNCラン2

FUNCラン3

FUNCラン4

糸出口:コード= 11

 

主な機能は、完了するのを待ち、終了したスレッドの実行の戻り値を取得するために実行のスレッドで作成されています。

 

問題:

malloc関数は、{}内のスタック空間を返す方法、割り当てられたヒープ領域です。疑わしいです。

おすすめ

転載: www.cnblogs.com/wanghao-boke/p/11262635.html