自學(xué):pthread_create函數(shù)和向線程函數(shù)傳遞參數(shù)

先來張自學(xué)提問圖:

pthread_create().png

自學(xué)提問圖中的栗子:

(1)線程函數(shù)只有一個(gè)參數(shù)的情況:直接定義一個(gè)變量通過應(yīng)用傳給線程函數(shù)。
#include <iostream>
#include <pthread.h>
using namespace     std;
pthread_t thread;
void fn(void *arg){    
    int i = *(int *)arg;    
    cout<<"i = "<<i<<endl;    
    return ((void *)0);
}
int main(){    
  int err1;    
  int i=10;   
  err1 = pthread_create(&thread, NULL, fn, &i);                
  pthread_join(thread, NULL);
}
(2)線程函數(shù)有多個(gè)參數(shù)的情況:這種情況就必須申明一個(gè)結(jié)構(gòu)體來包含所有的參數(shù),然后再傳入線程函數(shù),具體如下:
首先定義一個(gè)結(jié)構(gòu)體:
struct  parameter
{
  int size,
  int count;
  ```
};
然后在main函數(shù)將這個(gè)結(jié)構(gòu)體指針,作為void *形參的實(shí)際參數(shù)傳遞
struct parameter arg;
通過如下的方式來調(diào)用函數(shù):
pthread_create(&ntid, NULL, fn,& (arg));
函數(shù)中需要定義一個(gè)parameter類型的結(jié)構(gòu)指針來引用這個(gè)參數(shù)
void fn(void *arg){  
  int i = *(int *)arg;    
  cout<<"i = "<<i<<endl;      
  return ((void *)0);
}
void thr_fn(void *arg){ 
  struct parameter *pstru; 
  pstru = ( struct parameter *) arg;
// 然后在這個(gè)函數(shù)中就可以使用指針來使用相應(yīng)的變量的值了。
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文地址:C語言函數(shù)調(diào)用棧(一)C語言函數(shù)調(diào)用棧(二) 0 引言 程序的執(zhí)行過程可看作連續(xù)的函數(shù)調(diào)用。當(dāng)一個(gè)函數(shù)執(zhí)...
    小豬啊嗚閱讀 4,972評(píng)論 1 19
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,183評(píng)論 25 708
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場(chǎng)景。SDWebImage的原...
    LZM輪回閱讀 2,128評(píng)論 0 12
  • 我 遇見你 在一個(gè)孤寂的夜晚 將心事化作指尖的清寂 在琵琶弦上欲說還休 江風(fēng)清冷月色迷蒙 你 聽聞我 在一個(gè)蕭瑟的...
    冷雨微眠閱讀 751評(píng)論 0 2
  • 我是農(nóng)村孩子,爺爺奶奶的純樸及鄉(xiāng)里鄰居們的熱情使我從小就喜歡自己身處的環(huán)境。 我沒聽爺爺奶奶說過他們之間的愛情,只...
    暖果林閱讀 576評(píng)論 2 3

友情鏈接更多精彩內(nèi)容