青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小默

thread 線程屬性 脫離線程

線程的屬性

脫離線程:不向主線程返回信息,不需要主線程等待.
通過兩種方法創建:
調用pthread_detach;
修改線程的屬性. <- 這里使用

#include <pthread.h>
int pthread_attr_init(pthread_attr_t *attr);
初始化一個線程屬性對象.
pthread_destroy
回收一個線程屬性對象.

#include <pthread.h>
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate);
這個屬性允許我們無需對線程進行合并:
| PTHREAD_CREATE_JOINABLE 默認.
| PTHREAD_CREATE_DETACHED 不能調用pthread_join來獲得另一個線程的退出狀態.

int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy);
控制線程的調度方式:
| SCHED_OTHER 默認
| SCHED_RP   循環(round_robin) <- 下面2個調度方式具備實時調度功能,需要root權限.
| SCHED_FIFO 先進先出

int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param);
和schedpolicy配合使用,控制SCHED_OTHER線程的調度策略.

int pthread_attr_setinheritsched(pthread_attr_t *attr, int inherit);
int pthread_attr_getinheritsched(const pthread_attr_t *attr, int *inherit);
| PTHREAD_EXPLICIT_SCHED 調度由屬性明確設置.
| PTHREAD_INHERIT_SCHED  新線程沿用創建者的屬性.

int pthread_attr_setscope(pthread_attr_t *attr, int scope);
int pthread_attr_getscope(const pthread_attr_t *attr, int *scope);
控制一個線程調度的計算方式,目前Linux只支持PTHREAD_SCOPE_SYSTEM.

int pthread_attr_setstacksize(pthread_attr_t *attr, int scope);
int pthread_attr_getstacksize(const pthread_attr_t *attr, int *scope);
控制線程創建的棧大小,單位字節.可選.
Linux在實現線程時,默認的棧很大,這個屬性有點多余.

創建脫離線程:
/*
 * 線程屬性-創建脫離線程
 * 主線程不等待子線程結束,只通過thread_finished標志來檢測子線程是否已結束,并顯示線程之間仍然共享的變量.
 
*/
#include 
<stdio.h>
#include 
<unistd.h>
#include 
<stdlib.h>
#include 
<pthread.h>

void *thread_function(void *arg);

char g_message[] = "Hello World!";
int g_thread_finished = 0;

int main(){
    
int res;
    pthread_t a_thread;
    pthread_attr_t thread_attr;

    res 
= pthread_attr_init(&thread_attr);
    
if(res != 0){
        perror(
"Attribute creation failed");
        exit(EXIT_FAILURE);
    }

    res 
= pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);
    
if(res != 0){
        perror(
"Setting detached attribute failed");
        exit(EXIT_FAILURE);
    }

    res 
= pthread_create(&a_thread, &thread_attr,
            thread_function, (
void *)g_message);
    
if(res != 0){
        perror(
"Thread creation failed");
        exit(EXIT_FAILURE);
    }

    (
void)pthread_attr_destroy(&thread_attr);
    
while(!g_thread_finished){
        printf(
"Waiting for thread to say it's finished\n");
        sleep(
1);
    }
    printf(
"Other thread finished, bye!\n");
    exit(EXIT_SUCCESS);
}

void *thread_function(void *arg){
    printf(
"thread_function is running. Argument was %s\n", (char *)arg);
    sleep(
4);
    printf(
"Second thread setting finished flag, and exit now\n");
    g_thread_finished 
= 1;
    pthread_exit(NULL);
}

執行結果:
$ gcc -D_REENTRANT thread5.c -o thread5 -lpthread  
$ .
/thread5 
Waiting 
for thread to say it's finished
thread_function is running. Argument was Hello World!
Waiting 
for thread to say it's finished
Waiting for thread to say it's finished
Waiting for thread to say it's finished
Second thread setting finished flag, and exit now
Other thread finished, bye
!

--
FROM: Linux程序設計

posted on 2011-06-14 18:56 小默 閱讀(2253) 評論(0)  編輯 收藏 引用 所屬分類: Linux

導航

統計

留言簿(13)

隨筆分類(287)

隨筆檔案(289)

漏洞

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩裸体免费视频| 久久久久88色偷偷免费| 国产精品乱人伦一区二区| 欧美国产在线电影| 欧美激情在线狂野欧美精品| 欧美成人精品在线播放| 欧美国产精品v| 欧美视频在线观看免费| 国产精品乱人伦一区二区| 国产偷国产偷亚洲高清97cao| 国产日韩欧美一区二区三区在线观看 | 欧美视频在线观看 亚洲欧| 中日韩美女免费视频网站在线观看| 亚洲高清电影| 亚洲国产精品一区二区第一页 | 激情婷婷欧美| 亚洲精品乱码久久久久久日本蜜臀| 这里是久久伊人| 欧美专区日韩视频| 欧美电影免费观看高清| 在线一区欧美| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美日韩p片| 国产综合久久| 国产精品99久久久久久有的能看 | 久久久久一区二区三区四区| 久热re这里精品视频在线6| 欧美激情无毛| 亚洲免费视频一区二区| 久久亚洲高清| 国产精品亚洲一区| 日韩一级黄色大片| 久久久精品午夜少妇| 亚洲精品系列| 免费成人av在线| 国产一区二区三区久久精品| 在线视频你懂得一区| 另类图片综合电影| 亚洲午夜一区二区三区| 欧美经典一区二区三区| 在线国产精品一区| 欧美中文字幕| 中日韩美女免费视频网站在线观看| 午夜一区在线| 久久久久久自在自线| 国产精品伊人日日| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美成人免费视频| 久久精品中文字幕免费mv| 国产精品美女久久久| 中文av字幕一区| 亚洲区欧美区| 欧美电影免费网站| 亚洲精品国产精品乱码不99按摩 | 亚洲精品一区在线观看| 久久久777| 狠狠色狠狠色综合人人| 久久精品国产一区二区电影| 在线亚洲精品福利网址导航| 欧美视频一区二区三区| 亚洲一级片在线观看| 一区二区高清视频| 国产精品av久久久久久麻豆网 | 亚洲电影免费在线观看| 久久久水蜜桃| 亚洲国产成人在线播放| 欧美成人精品在线观看| 久久久亚洲精品一区二区三区| 国产一区二区三区无遮挡| 久久久久女教师免费一区| 久久国产99| 亚洲国产精品精华液网站| 欧美国产高潮xxxx1819| 欧美激情成人在线| 亚洲欧美日韩成人| 欧美激情中文字幕在线| 欧美大片免费看| 亚洲手机成人高清视频| 亚洲一区二区黄| 国产精品草莓在线免费观看| 亚洲伦理在线| 国产精品久久精品日日| 久久er99精品| 久久一区精品| 亚洲图片欧洲图片av| 亚洲欧美日产图| 在线精品视频一区二区三四| 亚洲黄色有码视频| 国产精品蜜臀在线观看| 久久午夜激情| 欧美欧美天天天天操| 小辣椒精品导航| 麻豆精品在线视频| 中文日韩在线视频| 久久久久99精品国产片| 在线中文字幕一区| 久久高清一区| 亚洲女优在线| 久久午夜激情| 午夜视频一区| 欧美成人在线网站| 久久成人一区二区| 欧美日韩1区2区3区| 久久男女视频| 国产精品久久久久9999高清| 欧美成人午夜77777| 国产精品亚洲不卡a| 亚洲激情午夜| 黄色工厂这里只有精品| 一道本一区二区| 91久久精品美女高潮| 午夜视频在线观看一区| 一区二区欧美在线观看| 蜜桃av综合| 欧美一区二区视频97| 欧美亚洲三区| 亚洲女同性videos| 欧美日韩1区2区3区| 欧美多人爱爱视频网站| 国产日韩亚洲欧美精品| 宅男噜噜噜66一区二区66| 99成人精品| 免费看黄裸体一级大秀欧美| 久久手机免费观看| 国产伦理一区| 亚洲香蕉网站| 亚洲性色视频| 欧美日韩黄色大片| 欧美激情在线免费观看| 雨宫琴音一区二区在线| 欧美中文字幕在线| 久久国产一区二区| 国产午夜精品一区二区三区欧美 | 亚洲精品免费电影| 亚洲精品一区二区三区蜜桃久 | 狂野欧美激情性xxxx| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲欧美激情诱惑| 亚洲男人的天堂在线| 一区二区不卡在线视频 午夜欧美不卡在 | 午夜久久久久| 午夜精品免费视频| 国产精品一二三四区| 亚洲性感激情| 欧美一区二区三区成人| 国产精品久久久久影院色老大| 亚洲伊人观看| 久久人人97超碰精品888| 国内在线观看一区二区三区 | 巨胸喷奶水www久久久免费动漫| 久久精品国产免费观看| 国产综合色一区二区三区 | 亚洲一区久久| 久久久久久久91| 精品av久久707| 欧美电影在线观看完整版| 亚洲精品一级| 久久精品国产亚洲一区二区三区 | 久久高清一区| 亚洲福利视频一区| 欧美日产在线观看| 亚洲一区影音先锋| 快she精品国产999| 亚洲乱码国产乱码精品精98午夜| 欧美日韩免费区域视频在线观看| 亚洲深夜福利网站| 老司机67194精品线观看| 亚洲激情电影在线| 国产精品国产自产拍高清av王其| 久久精品国内一区二区三区| 亚洲精品1区2区| 欧美专区在线观看| 亚洲区免费影片| 国产日韩av一区二区| 免费亚洲网站| 先锋影音久久久| 欧美日韩一区二区三区| 亚洲国产99精品国自产| 国产精品qvod| 美女日韩欧美| 亚洲欧美国产77777| 亚洲国产精品久久久| 久久成人精品视频| 日韩一区二区高清| 一区二区三区在线观看视频| 欧美日韩国产色视频| 欧美在线黄色| 欧美/亚洲一区| 欧美韩国一区| 欧美影院久久久| 一本久久a久久免费精品不卡| 狠狠干狠狠久久| 国产精品久久一区二区三区| 欧美电影免费观看大全| 久久精品在线观看| 亚洲一区二区在线播放| 日韩视频二区| 亚洲欧洲精品成人久久奇米网| 久久综合一区二区| 久久激情五月婷婷|