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

小默

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>
            亚洲欧美中文日韩在线| 在线视频你懂得一区二区三区| 欧美一区2区视频在线观看 | 99精品国产高清一区二区 | 欧美好吊妞视频| 久久久亚洲精品一区二区三区| 久久免费黄色| 亚洲第一色在线| 亚洲国产一区在线| 日韩一二在线观看| 亚洲欧美日韩精品在线| 久久精品人人做人人爽电影蜜月| 久久噜噜噜精品国产亚洲综合| 女生裸体视频一区二区三区| 欧美看片网站| 国产日韩在线一区二区三区| 91久久一区二区| 亚洲欧美日本精品| 玖玖玖国产精品| 日韩视频免费在线观看| 午夜精品视频在线观看| 久久久美女艺术照精彩视频福利播放| 欧美xart系列高清| 国产日韩精品综合网站| 亚洲精品在线三区| 久久久999精品| 日韩视频一区二区三区| 久久gogo国模裸体人体| 欧美日韩国产综合视频在线观看| 国产拍揄自揄精品视频麻豆| 日韩西西人体444www| 欧美专区中文字幕| 亚洲国产精品va| 久久xxxx| 国产精品一级| aa日韩免费精品视频一| 免费看亚洲片| 欧美一级久久| 国产精品伦子伦免费视频| 亚洲精品日韩激情在线电影| 久久久久国产一区二区| 一本色道久久综合亚洲二区三区| 久久久精品五月天| 国产视频观看一区| 亚洲欧美在线一区| 日韩亚洲一区在线播放| 欧美成人资源| 亚洲国产日韩欧美| 久热国产精品| 久久国产欧美日韩精品| 国产精品一区在线观看你懂的| 在线一区二区三区四区| 亚洲国产精品免费| 欧美1区2区视频| 亚洲国产成人精品女人久久久| 久久九九久精品国产免费直播| 亚洲图片欧美午夜| 亚洲精品国产日韩| 欧美精品午夜视频| 亚洲伦理精品| 亚洲人成网站999久久久综合| 久久亚洲午夜电影| 在线成人www免费观看视频| 久久久久久久久岛国免费| 欧美一区二区三区男人的天堂| 国产精品久久久久久久久久久久| 一本久道久久综合中文字幕| 亚洲国产欧美另类丝袜| 欧美激情自拍| 亚洲视频1区| 亚洲视频一二| 国产日韩在线不卡| 老司机一区二区| 欧美暴力喷水在线| 99亚洲一区二区| 一区二区三区视频在线看| 国产精品国产三级国产普通话蜜臀| 亚洲综合视频网| 欧美一级视频精品观看| 一区一区视频| 91久久亚洲| 国产精品一区久久| 免费看的黄色欧美网站| 欧美老女人xx| 久久99伊人| 暖暖成人免费视频| 亚洲男人天堂2024| 久久久久久午夜| 一区二区三区高清视频在线观看 | 久久福利资源站| 亚洲激精日韩激精欧美精品| 日韩一级成人av| 狠狠干综合网| 亚洲另类自拍| 红桃视频欧美| 亚洲免费成人av| 国产一区在线播放| 亚洲欧洲日本一区二区三区| 国产精品视频| 亚洲国产日韩欧美| 国产午夜精品一区二区三区视频 | 亚洲欧美综合v| 久久色中文字幕| 亚洲自拍偷拍视频| 麻豆国产va免费精品高清在线| 亚洲一区日韩在线| 免费亚洲视频| 久久九九免费| 欧美视频三区在线播放| 免费成人av资源网| 国产精品久久中文| 亚洲黄色一区二区三区| 国产亚洲精品bt天堂精选| 91久久久久久久久| 在线电影一区| 久久成人国产精品| 欧美伊人精品成人久久综合97| 亚洲日韩欧美视频| 国内伊人久久久久久网站视频| 亚洲最新色图| 亚洲精品一区二区三区樱花 | 久久九九电影| 国产精品日韩欧美一区| 亚洲精品日韩激情在线电影| 亚洲动漫精品| 久久久亚洲国产天美传媒修理工| 亚洲欧美中文日韩在线| 欧美三级小说| 亚洲精品在线观| 亚洲乱码国产乱码精品精98午夜| 久久久久久有精品国产| 久久婷婷丁香| 在线播放国产一区中文字幕剧情欧美| 亚洲一区二区三区中文字幕在线| 一本一道久久综合狠狠老精东影业| 美女在线一区二区| 亚洲大胆视频| 日韩视频在线免费观看| 欧美精品1区| 亚洲裸体俱乐部裸体舞表演av| 亚洲欧洲一区二区在线观看| 欧美成人精品1314www| 91久久香蕉国产日韩欧美9色| 亚洲免费电影在线| 欧美日韩一区高清| 制服诱惑一区二区| 欧美一区二区三区四区高清| 国产精品一区二区男女羞羞无遮挡 | 欧美日韩精品在线视频| 亚洲精品视频在线观看免费| 一区二区三区不卡视频在线观看| 欧美日韩大片| 在线亚洲欧美| 久久久久久亚洲精品杨幂换脸 | 欧美国产亚洲另类动漫| 亚洲精品护士| 欧美亚洲视频一区二区| 国产亚洲精品成人av久久ww| 久久久亚洲一区| 亚洲区在线播放| 亚洲欧美日韩在线高清直播| 国产亚洲精品久久久久久| 久久九九久精品国产免费直播 | 亚洲一区二区三区四区中文| 男女视频一区二区| 欧美69视频| 欧美在线观看视频一区二区| 麻豆国产va免费精品高清在线| 欧美成人黑人xx视频免费观看| 亚洲国产精品一区| 欧美视频中文在线看 | 日韩一级成人av| 久久精品国产精品亚洲| 亚洲黄色成人久久久| 国产精品福利片| 久久露脸国产精品| 亚洲一品av免费观看| 欧美jizz19性欧美| 午夜视频久久久久久| 91久久精品美女高潮| 国产精品久久久久久妇女6080| 久久三级福利| 亚洲女人天堂av| 91久久久亚洲精品| 久久久久国产一区二区三区四区| 99国产精品99久久久久久| 国产自产精品| 国产精品草莓在线免费观看| 久久午夜国产精品| 午夜一级久久| 国产精品99久久不卡二区| 亚洲高清视频在线| 久久久999精品免费| 99热免费精品在线观看| 激情综合激情| 国产精品一区二区久久| 欧美极品色图| 免费成人网www| 久久久久久久一区二区| 午夜精品区一区二区三|