日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

linux多線程

系統(tǒng) 2141 0

1、進(jìn)程與線程

這是個(gè)老生常談的話題,我們只需要記住:

進(jìn)程可是一個(gè)資源的基本單位,而線程是程序調(diào)度的基本單位,一個(gè)進(jìn)程內(nèi)部的線程之間共享進(jìn)程獲得的時(shí)間片。線程擁有自己的棧,因?yàn)榫€程有自己的局部變量,其他的資源(文件描述字,全局變量等)和其他線程共享。

2、有關(guān)線程的函數(shù)

int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);

參數(shù)說(shuō)明:

thread:指向pthread_create類型的指針,用于引用新創(chuàng)建的線程。

attr:用于設(shè)置線程的屬性,一般不需要特殊的屬性,所以可以簡(jiǎn)單地設(shè)置為NULL。

*(*start_routine)(void *):傳遞新線程所要執(zhí)行的函數(shù)地址。

arg:新線程所要執(zhí)行的函數(shù)的參數(shù)。

調(diào)用如果成功,則返回值是0,如果失敗則返回錯(cuò)誤代碼。

void pthread_exit(void *retval);

參數(shù)說(shuō)明:

retval:返回指針,指向線程向要返回的某個(gè)對(duì)象。

線程通過(guò)調(diào)用pthread_exit函數(shù)終止執(zhí)行,并返回一個(gè)指向某對(duì)象的指針。不能指向局部變量…… 如下栗子:

View Code
        
          void
        
         threadFunc(
        
          char
        
         *
        
           arg){

    
        
        
          char
        
         result = 
        
          '
        
        
          d
        
        
          '
        
        
          ;

    printf(
        
        
          "
        
        
          %s\n
        
        
          "
        
        
          , arg);

    

    pthread_exit(
        
        &
        
          result);

}






        
        
          int
        
        
           main(){

    pthread_t t1;

    
        
        
          void
        
         *
        
           res;

    
        
        
          int
        
        
           s;

    

    s 
        
        = pthread_create(&t1, NULL, (
        
          void
        
         *)threadFunc, (
        
          void
        
         *)
        
          "
        
        
          hello world
        
        
          "
        
        
          );



    
        
        
          if
        
        (s != 
        
          0
        
        ) printf(
        
          "
        
        
          create failed\n
        
        
          "
        
        
          );



    s 
        
        = pthread_join(t1, &
        
          res);



    
        
        
          if
        
        (s != 
        
          0
        
        ) printf(
        
          "
        
        
          join failed\n
        
        
          "
        
        
          );

    

    printf(
        
        
          "
        
        
          thread return %c
        
        
          "
        
        ,*((
        
          char
        
         *
        
          )res));



    
        
        
          return
        
        
          0
        
        
          ;

}
        
      

?

int pthread_join(pthread_t thread, void ** retval);

參數(shù)說(shuō)明:

thread: 線程標(biāo)識(shí)符,即線程ID,標(biāo)識(shí)唯一線程。   

retval: 用戶定義的指針,用來(lái)存儲(chǔ)被等待線程的返回值。

來(lái)源百度百科:代碼中如果沒(méi)有 pthread_join 主線程會(huì)很快結(jié)束從而使整個(gè)進(jìn)程結(jié)束,從而使創(chuàng)建的線程沒(méi)有機(jī)會(huì)開(kāi)始執(zhí)行就結(jié)束了。加入 pthread_join 后,主線程會(huì)一直等待直到等待的線程結(jié)束自己才結(jié)束,使創(chuàng)建的線程有機(jī)會(huì)執(zhí)行。   所有線程都有一個(gè)線程號(hào),也就是 Thread ID 。其類型為 pthread_t 。通過(guò)調(diào)用 pthread_self() 函數(shù)可以獲得自身的線程號(hào)。

linux多線程


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 榆树市| 清涧县| 泽普县| 曲松县| 夏津县| 景泰县| 灵石县| 手机| 筠连县| 沿河| 云龙县| 防城港市| 新安县| 锡林浩特市| 泾阳县| 怀柔区| 海南省| 兴义市| 穆棱市| 吕梁市| 綦江县| 乌兰浩特市| 隆德县| 柳河县| 定陶县| 林芝县| 基隆市| 阜宁县| 宜兰县| 垣曲县| 双江| 深泽县| 太原市| 长海县| 定日县| 卫辉市| 房产| 桂林市| 分宜县| 玉田县| 平原县|