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

小默

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>
            欧美成人精品激情在线观看| 亚洲一区3d动漫同人无遮挡| 欧美日韩国产美女| 欧美亚洲免费| 亚洲美女精品一区| 欧美福利一区二区| 欧美在线视频一区二区三区| 亚洲一二三区精品| 一区二区三区欧美激情| 亚洲日本成人在线观看| 91久久黄色| 亚洲风情亚aⅴ在线发布| 伊人久久大香线蕉av超碰演员| 国产精品美女久久久久久久| 欧美网站在线观看| 国产精品国产馆在线真实露脸| 欧美色播在线播放| 可以看av的网站久久看| 免费国产一区二区| 欧美精品偷拍| 国产精品都在这里| 欧美日韩亚洲系列| 99re6热只有精品免费观看 | 久久精品99久久香蕉国产色戒| 麻豆精品在线观看| 亚洲高清毛片| 亚洲精品久久嫩草网站秘色| 欧美—级高清免费播放| 欧美一级成年大片在线观看| 欧美ed2k| 久久国产日韩欧美| 一区二区三区 在线观看视频| 欧美激情久久久久久| 一本久久a久久免费精品不卡| 久久国产精品色婷婷| 9l视频自拍蝌蚪9l视频成人| 国产欧美一区二区三区久久| 欧美国产第一页| 久久久精品动漫| 亚洲电影免费观看高清完整版在线观看| 1024成人网色www| 欧美成人午夜激情| 久久亚洲精品视频| 国产精品二区影院| 欧美韩国一区| 国产欧美一区二区精品忘忧草| 国产精品免费一区豆花| 一区二区在线观看av| 亚洲精品欧美在线| 亚洲午夜影视影院在线观看| 亚洲视频狠狠| 亚洲激情在线视频| 亚洲免费高清视频| 久久久久综合| 国产精品成人一区二区三区吃奶 | 亚洲国产欧美一区二区三区久久| 国产日韩高清一区二区三区在线| 在线观看不卡av| 亚洲伦理在线| 麻豆久久婷婷| 亚洲少妇自拍| 欧美日韩国产精品成人| 国产欧美短视频| 99精品欧美一区二区三区| 欧美制服第一页| 欧美伊人影院| 国产精品久久久久久久久久尿| 亚洲第一中文字幕在线观看| 久久久精品午夜少妇| 午夜精品久久久久久久蜜桃app | 欧美日韩免费精品| 亚洲高清精品中出| 欧美国产一区二区| 欧美gay视频| 亚洲国产日本| 在线一区二区视频| 国内成+人亚洲+欧美+综合在线| 午夜精品久久久久久久男人的天堂| 亚洲免费大片| 国产欧美日韩不卡| 久久久www成人免费毛片麻豆| 久久国产毛片| 91久久中文| 亚洲综合国产| 亚洲成在人线av| 亚洲国产1区| 欧美午夜a级限制福利片| 亚洲欧美激情一区| 亚洲欧美成人一区二区三区| 国产综合视频在线观看| 欧美激情四色 | 亚洲国产一区视频| 欧美一区二区三区四区在线观看| 国产精品夜夜夜| 久久综合五月天婷婷伊人| 欧美激情中文不卡| 蜜桃久久精品乱码一区二区| 欧美日韩一区二区三区免费看| 性视频1819p久久| 久久久www成人免费无遮挡大片 | 激情小说另类小说亚洲欧美| 久久精品99| 久久青草欧美一区二区三区| 亚洲先锋成人| 免费在线视频一区| 麻豆91精品| 国产精品乱码一区二三区小蝌蚪| 欧美不卡视频| 国产麻豆视频精品| 亚洲精品一区二区三区不| 国产日韩欧美在线| 亚洲国产精品小视频| 国产欧美一级| 日韩午夜免费视频| 亚洲国产天堂久久国产91| 欧美一区二区视频网站| 亚洲欧美日韩视频二区| 欧美理论电影在线播放| 欧美激情视频在线播放| 激情久久久久| 久久国产免费| 中日韩美女免费视频网址在线观看| 久久精品亚洲一区二区| 久久亚洲国产精品一区二区 | 国语自产精品视频在线看8查询8| 欧美激情第10页| 激情欧美丁香| 两个人的视频www国产精品| 亚洲专区一区| 国产精品一卡二| 亚洲在线成人精品| 久久精品免费看| 加勒比av一区二区| 亚洲欧美一区二区三区极速播放| 久久久噜噜噜| 欧美韩日高清| 夜夜嗨一区二区| 国产精品美女午夜av| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲毛片视频| 国产区在线观看成人精品| 欧美在线一区二区三区| 老色批av在线精品| 亚洲精品欧洲| 国产精品海角社区在线观看| 亚洲午夜羞羞片| 久久久夜夜夜| 亚洲欧美成人一区二区三区| 国精产品99永久一区一区| 欧美精品免费看| 久久久999国产| 亚洲天堂免费观看| 麻豆精品传媒视频| 夜夜嗨一区二区| 国产精品免费看| 美日韩免费视频| 亚洲欧美在线aaa| 亚洲人成亚洲人成在线观看图片 | 久久伊人一区二区| 久久久久国产精品人| 亚洲精品资源| 在线日韩一区二区| 国产一区二区按摩在线观看| 欧美日韩网址| 欧美三日本三级少妇三2023| 欧美另类一区| 欧美精品手机在线| 欧美日韩国内自拍| 欧美1区2区3区| 欧美不卡视频一区发布| 欧美高清在线观看| 久久综合中文字幕| 一区二区三区久久| 亚洲电影自拍| 你懂的成人av| 欧美电影资源| 亚洲精品婷婷| 午夜视频一区二区| 欧美一区日韩一区| 午夜在线精品偷拍| 欧美有码在线视频| 亚洲影院高清在线| 最新69国产成人精品视频免费| 亚洲国产精品一区二区www| 激情成人av在线| 一区二区三区毛片| 亚洲综合国产激情另类一区| 欧美一级在线亚洲天堂| 午夜亚洲激情| 欧美成人69av| 亚洲无线观看| 久久深夜福利免费观看| 欧美激情一区二区在线| 欧美日韩一区二区三区高清| 国产午夜精品美女视频明星a级| 欧美日韩在线精品一区二区三区| 国产日韩欧美a| 亚洲一区在线观看免费观看电影高清| 久久青草欧美一区二区三区| 日韩西西人体444www|