一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

線程屬性pthread

 Sundy工作室 2013-09-28
  Posix線程中的線程屬性pthread_attr_t主要包括scope屬性、detach屬性、堆棧地址、堆棧大小、優(yōu)先級(jí)。在pthread_create中,把第二個(gè)參數(shù)設(shè)置為NULL的話,將采用默認(rèn)的屬性配置。
pthread_attr_t的主要屬性的意義如下:
__detachstate,表示新線程是否與進(jìn)程中其他線程脫離同步, 如果設(shè)置為PTHREAD_CREATE_DETACHED 則新線程不能用pthread_join()來(lái)同步,且在退出時(shí)自行釋放所占用的資源。缺省為PTHREAD_CREATE_JOINABLE狀態(tài)。這個(gè)屬性也可以在線程創(chuàng)建并運(yùn)行以后用pthread_detach()來(lái)設(shè)置,而一旦設(shè)置為PTHREAD_CREATE_DETACH狀態(tài)(不論是創(chuàng)建時(shí)設(shè)置還是運(yùn)行時(shí)設(shè)置)則不能再恢復(fù)到PTHREAD_CREATE_JOINABLE狀態(tài)。
__schedpolicy,表示新線程的調(diào)度策略,主要包括SCHED_OTHER(正常、非實(shí)時(shí))、SCHED_RR(實(shí)時(shí)、輪轉(zhuǎn)法)和SCHED_FIFO(實(shí)時(shí)、先入先出)三種,缺省為SCHED_OTHER,后兩種調(diào)度策略僅對(duì)超級(jí)用戶有效。運(yùn)行時(shí)可以用過(guò)pthread_setschedparam()來(lái)改變。
__schedparam,一個(gè)struct sched_param結(jié)構(gòu),目前僅有一個(gè)sched_priority整型變量表示線程的運(yùn)行優(yōu)先級(jí)。這個(gè)參數(shù)僅當(dāng)調(diào)度策略為實(shí)時(shí)(即SCHED_RR或SCHED_FIFO)時(shí)才有效,并可以在運(yùn)行時(shí)通過(guò)pthread_setschedparam()函數(shù)來(lái)改變,缺省為0。
__inheritsched,有兩種值可供選擇:PTHREAD_EXPLICIT_SCHEDPTHREAD_INHERIT_SCHED,前者表示新線程使用顯式指定調(diào)度策略和調(diào)度參數(shù)(即attr中的值),而后者表示繼承調(diào)用者線程的值。缺省為PTHREAD_EXPLICIT_SCHED
__scope,表示線程間競(jìng)爭(zhēng)CPU的范圍,也就是說(shuō)線程優(yōu)先級(jí)的有效范圍。POSIX的標(biāo)準(zhǔn)中定義了兩個(gè)值:PTHREAD_SCOPE_SYSTEMPTHREAD_SCOPE_PROCESS,前者表示與系統(tǒng)中所有線程一起競(jìng)爭(zhēng)CPU時(shí)間,后者表示僅與同進(jìn)程中的線程競(jìng)爭(zhēng)CPU。目前LinuxThreads僅實(shí)現(xiàn)了PTHREAD_SCOPE_SYSTEM一值。
  為了設(shè)置這些屬性,POSIX定義了一系列屬性設(shè)置函數(shù),包括pthread_attr_init()、pthread_attr_destroy()和與各個(gè)屬性相關(guān)的pthread_attr_getXXX/pthread_attr_setXXX函數(shù)。
在設(shè)置線程屬性 pthread_attr_t 之前,通常先調(diào)用pthread_attr_init來(lái)初始化,之后來(lái)調(diào)用相應(yīng)的屬性設(shè)置函數(shù)。
主要的函數(shù)如下:
1、pthread_attr_init
功能:        對(duì)線程屬性變量的初始化。
頭文件:     <pthread.h>
函數(shù)原型:   int pthread_attr_init (pthread_attr_t* attr);
函數(shù)傳入值:attr:線程屬性。
函數(shù)返回值:成功: 0
                失敗: -1
2、pthread_attr_setscope
功能:        設(shè)置線程 __scope 屬性。scope屬性表示線程間競(jìng)爭(zhēng)CPU的范圍,也就是說(shuō)線程優(yōu)先級(jí)的有效范圍。POSIX的標(biāo)準(zhǔn)中定義了兩個(gè)值:PTHREAD_SCOPE_SYSTEMPTHREAD_SCOPE_PROCESS,前者表示與系統(tǒng)中所有線程一起競(jìng)爭(zhēng)CPU時(shí)間,后者表示僅與同進(jìn)程中的線程競(jìng)爭(zhēng)CPU。默認(rèn)為PTHREAD_SCOPE_PROCESS。目前LinuxThreads僅實(shí)現(xiàn)了PTHREAD_SCOPE_SYSTEM一值。
頭文件:     <pthread.h>
函數(shù)原型:   int pthread_attr_setscope (pthread_attr_t* attr, int scope);
函數(shù)傳入值:attr: 線程屬性。
                      scope:PTHREAD_SCOPE_SYSTEM,表示與系統(tǒng)中所有線程一起競(jìng)爭(zhēng)CPU時(shí)間,
                                 PTHREAD_SCOPE_PROCESS,表示僅與同進(jìn)程中的線程競(jìng)爭(zhēng)CPU
函數(shù)返回值得:同1。
3、pthread_attr_setdetachstate
功能:        設(shè)置線程detachstate屬性。該表示新線程是否與進(jìn)程中其他線程脫離同步,如果設(shè)置為PTHREAD_CREATE_DETACHED則新線程不能用pthread_join()來(lái)同步,且在退出時(shí)自行釋放所占用的資源。缺省為PTHREAD_CREATE_JOINABLE狀態(tài)。這個(gè)屬性也可以在線程創(chuàng)建并運(yùn)行以后用pthread_detach()來(lái)設(shè)置,而一旦設(shè)置為PTHREAD_CREATE_DETACH狀態(tài)(不論是創(chuàng)建時(shí)設(shè)置還是運(yùn)行時(shí)設(shè)置)則不能再恢復(fù)到PTHREAD_CREATE_JOINABLE狀態(tài)。
頭文件:      <phread.h>
函數(shù)原型:    int pthread_attr_setdetachstate (pthread_attr_t* attr, int detachstate);
函數(shù)傳入值:attr:線程屬性。
detachstate:PTHREAD_CREATE_DETACHED不能用pthread_join()來(lái)同步,且在退出時(shí)自行釋放所占用的資源
                    PTHREAD_CREATE_JOINABLE,能用pthread_join()來(lái)同步
函數(shù)返回值得:同1。
4、pthread_attr_setschedparam
功能:       設(shè)置線程schedparam屬性,即調(diào)用的優(yōu)先級(jí)。
頭文件:     <pthread.h>
函數(shù)原型:   int pthread_attr_setschedparam (pthread_attr_t* attr, struct sched_param* param);
函數(shù)傳入值:attr:線程屬性。
                 param:線程優(yōu)先級(jí)。一個(gè)struct sched_param結(jié)構(gòu),目前僅有一個(gè)sched_priority整型變量表示線程的運(yùn)行優(yōu)先級(jí)。這個(gè)參數(shù)僅當(dāng)調(diào)度策略為實(shí)時(shí)(即SCHED_RR或SCHED_FIFO)時(shí)才有效,并可以在運(yùn)行時(shí)通過(guò)pthread_setschedparam()函數(shù)來(lái)改變,缺省為0
函數(shù)返回值:同1。
5、pthread_attr_getschedparam
功能:       得到線程優(yōu)先級(jí)。
頭文件:    <pthread.h>
函數(shù)原型:  int pthread_attr_getschedparam (pthread_attr_t* attr, struct sched_param* param);
函數(shù)傳入值:attr:線程屬性;
                    param:線程優(yōu)先級(jí);
函數(shù)返回值:同1。
示例1

#include <stdlib.h>   
#include <stdio.h>   
#include <errno.h>   
#include <pthread.h>   
static void pthread_func_1 (void);   
static void pthread_func_2 (void);   
  
int main (int argc, char** argv)   
{   
  pthread_t pt_1 = 0;   
  pthread_t pt_2 = 0;   
  pthread_attr_t atrr = {0};   
  int ret = 0;   
  
/*初始化屬性線程屬性*/
  pthread_attr_init (&attr);   
  pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM);   
  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);   
     
  ret = pthread_create (&pt_1, &attr, pthread_func_1, NULL);   
  if (ret != 0)   
  {   
    perror ("pthread_1_create");   
  }   
     
  ret = pthread_create (&pt_2, NULL, pthread_func_2, NULL);   
  if (ret != 0)   
  {   
    perror ("pthread_2_create");   
  }   
  
  pthread_join (pt_2, NULL);   
  
  return 0;   
}   
  
static void pthread_func_1 (void)   
{   
  int i = 0;   
     
  for (; i < 6; i++)   
  {    
    printf ("This is pthread_1.\n");   
      
    if (i == 2)   
    {   
      pthread_exit (0);   
    }   
  }   
  
  return;   
}   
  
static void pthread_func_2 (void)   
{   
  int i = 0;   
  
  for (; i < 3; i ++)   
  {   
    printf ("This is pthread_2.\n");   
  }   
  
  return;   
}  

從上面事例中,可以得到這么一個(gè)結(jié)果,就是線程一的線程函數(shù)一結(jié)束就自動(dòng)釋放資源,線程二就得等到pthread_join來(lái)釋放系統(tǒng)資源。

結(jié)束!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产日韩精品欧美综合区| 欧美大黄片在线免费观看| 一级片黄色一区二区三区| 久久精品国产一区久久久| 国产乱久久亚洲国产精品| 亚洲国产av一二三区| 日韩一区二区三区免费av| 精品一区二区三区人妻视频| 日本亚洲精品在线观看| 一区二区日韩欧美精品| 好吊一区二区三区在线看| 富婆又大又白又丰满又紧又硬| 美女被啪的视频在线观看| 亚洲国产成人精品一区刚刚| 国产又色又爽又黄的精品视频| 老熟女露脸一二三四区| 欧美精品日韩精品一区| 五月天综合网五月天综合网| 91亚洲国产日韩在线| 一区二区三区日韩中文| 在线一区二区免费的视频 | 欧美日韩一级黄片免费观看| 久久精品亚洲欧美日韩| 激情国产白嫩美女在线观看| 欧美激情一区二区亚洲专区| 国产色偷丝袜麻豆亚洲| 欧美字幕一区二区三区| 欧美日韩精品综合在线| 亚洲一区二区精品福利| 丰满人妻少妇精品一区二区三区| 麻豆精品在线一区二区三区| 九九九热视频最新在线| 99热九九热这里只有精品| 久久精品福利在线观看| 少妇肥臀一区二区三区| 欧美精品在线观看国产| 国产欧美日韩不卡在线视频| 一区二区三区四区亚洲另类| 欧洲一区二区三区自拍天堂| 好吊视频一区二区在线| 色婷婷视频国产一区视频|