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

<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

統(tǒng)計(jì)

  • 隨筆 - 44
  • 文章 - 0
  • 評論 - 86
  • 引用 - 0

常用鏈接

留言簿(6)

隨筆分類(31)

隨筆檔案(44)

Mining

最新隨筆

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

Linux C編程 - 線程

Linux 系統(tǒng)下的多線程遵循POSIX線程接口,稱為pthread。編寫Linux下的多線程程序,需要使用頭文件pthread.h,連接時(shí)需要使用庫 libpthread.a。

1. 線程的創(chuàng)建和使用
線程的創(chuàng)建是用下面的幾個(gè)函數(shù)來實(shí)現(xiàn)的.

int ?pthread_create(pthread_t? * thread,pthread_attr_t? * attr,? void ? * ( * start_routine)( void ? * ), void ? * arg);
void ?pthread_exit( void ? * retval);
int ?pthread_join(pthread? * thread, void ? ** thread_return);

pthread_create創(chuàng)建一個(gè)線程,thread是用來表明創(chuàng)建線程的ID,attr指出線程創(chuàng)建時(shí)候的屬性,我們用NULL來表明使用缺省屬性.start_routine函數(shù)指針是線程創(chuàng)建成功后開始執(zhí)行的函數(shù),arg是這個(gè)函數(shù)的唯一一個(gè)參數(shù).表明傳遞給start_routine 的參數(shù).
pthread_exit函數(shù)和exit函數(shù)類似用來退出線程.這個(gè)函數(shù)結(jié)束線程,釋放函數(shù)的資源,并在最后阻塞,直到其他線程使用
pthread_join函數(shù)等待它.然后將*retval的值傳遞給**thread_return.由于這個(gè)函數(shù)釋放所以的函數(shù)資源,所以 retval不能夠指向函數(shù)的局部變量.
pthread_join和wait調(diào)用一樣用來等待指定的線程.

下面展示一個(gè)最簡單的多線程程序。

#include? < stdio.h >
#include?
< pthread.h >
void ?thread( void )
{
?
int ?i;
?
for (i = 0 ;i < 3 ;i ++ )
?printf(
" This?is?a?pthread.\n " );
}

int ?main( void )
{
?pthread_t?id;
?
int ?i,ret;
?ret
= pthread_create( & id,NULL,( void ? * )?thread,NULL);
?
if (ret != 0 )
?{
??printf?(
" Create?pthread?error!\n " );
??exit?(
1 );
?}
?
for (i = 0 ;i < 3 ;i ++ )
??printf(
" This?is?the?main?process.\n " );
?pthread_join(id,NULL);
?
return ?( 0 );
}

2. 修改線程的屬性
上面用pthread_create函數(shù)創(chuàng)建了一個(gè)線程,在這個(gè)線程中,我們使用了默認(rèn)參數(shù),即將該函數(shù)的第二個(gè)參數(shù)設(shè)為NULL。屬性結(jié)構(gòu)為pthread_attr_t,它同樣在頭文件/usr/include/pthread.h中定義。屬性值不能直接設(shè)置,須使用相關(guān)函數(shù)進(jìn)行操作,初始化的函數(shù)為pthread_attr_init,這個(gè)函數(shù)必須在pthread_create函數(shù)之前調(diào)用。屬性對象主要包括是否綁定、是否分離、堆棧地址、堆棧大小、優(yōu)先級。默認(rèn)的屬性為非綁定、非分離、缺省1M的堆棧、與父進(jìn)程同樣級別的優(yōu)先級。

關(guān)于線程的綁定,牽涉到另外一個(gè)概念:輕進(jìn)程(LWP:Light Weight Process)。輕進(jìn)程可以理解為內(nèi)核線程,它位于用戶層和系統(tǒng)層之間。系統(tǒng)對線程資源的分配、對線程的控制是通過輕進(jìn)程來實(shí)現(xiàn)的,一個(gè)輕進(jìn)程可以控制一個(gè)或多個(gè)線程。默認(rèn)狀況下,啟動(dòng)多少輕進(jìn)程、哪些輕進(jìn)程來控制哪些線程是由系統(tǒng)來控制的,這種狀況即稱為非綁定的。綁定狀況下,則顧名思義,即某個(gè)線程固定的"綁"在一個(gè)輕進(jìn)程之上。被綁定的線程具有較高的響應(yīng)速度,這是因?yàn)镃PU時(shí)間片的調(diào)度是面向輕進(jìn)程的,綁定的線程可以保證在需要的時(shí)候它總有一個(gè)輕進(jìn)程可用。通過設(shè)置被綁定的輕進(jìn)程的優(yōu)先級和調(diào)度級可以使得綁定的線程滿足諸如實(shí)時(shí)反應(yīng)之類的要求。
設(shè)置線程綁定狀態(tài)的函數(shù)為pthread_attr_setscope,它有兩個(gè)參數(shù),第一個(gè)是指向?qū)傩越Y(jié)構(gòu)的指針,第二個(gè)是綁定類型,它有兩個(gè)取值:PTHREAD_SCOPE_SYSTEM(綁定的)和PTHREAD_SCOPE_PROCESS(非綁定的)。下面的代碼即創(chuàng)建了一個(gè)綁定的線程。

#include? < pthread.h >
pthread_attr_t?attr;
pthread_t?tid;

/* 初始化屬性值,均設(shè)為默認(rèn)值 */
pthread_attr_init(
& attr);
pthread_attr_setscope(
& attr,?PTHREAD_SCOPE_SYSTEM);
pthread_create(
& tid,? & attr,?( void ? * )?my_function,?NULL);

線程的分離狀態(tài)決定一個(gè)線程以什么樣的方式來終止自己。在上面的例子中,我們采用了線程的默認(rèn)屬性,即為非分離狀態(tài),這種情況下,原有的線程等待創(chuàng)建的線程結(jié)束。只有當(dāng)pthread_join()函數(shù)返回時(shí),創(chuàng)建的線程才算終止,才能釋放自己占用的系統(tǒng)資源。而分離線程不是這樣子的,它沒有被其他的線程所等待,自己運(yùn)行結(jié)束了,線程也就終止了,馬上釋放系統(tǒng)資源。程序員應(yīng)該根據(jù)自己的需要,選擇適當(dāng)?shù)姆蛛x狀態(tài)。設(shè)置線程分離狀態(tài)的函數(shù)為 pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)。第二個(gè)參數(shù)可選為PTHREAD_CREATE_DETACHED(分離線程)和 PTHREAD_CREATE_JOINABLE(非分離線程)。這里要注意的一點(diǎn)是,如果設(shè)置一個(gè)線程為分離線程,而這個(gè)線程運(yùn)行又非常快,它很可能在 pthread_create函數(shù)返回之前就終止了,它終止以后就可能將線程號和系統(tǒng)資源移交給其他的線程使用,這樣調(diào)用pthread_create的線程就得到了錯(cuò)誤的線程號。要避免這種情況可以采取一定的同步措施,最簡單的方法之一是可以在被創(chuàng)建的線程里調(diào)用 pthread_cond_timewait函數(shù),讓這個(gè)線程等待一會(huì)兒,留出足夠的時(shí)間讓函數(shù)pthread_create返回。設(shè)置一段等待時(shí)間,是在多線程編程里常用的方法。但是注意不要使用諸如wait()之類的函數(shù),它們是使整個(gè)進(jìn)程睡眠,并不能解決線程同步的問題。


另外一個(gè)可能常用的屬性是線程的優(yōu)先級,它存放在結(jié)構(gòu)sched_param中。用函數(shù)pthread_attr_getschedparam和函數(shù) pthread_attr_setschedparam進(jìn)行存放,一般說來,我們總是先取優(yōu)先級,對取得的值修改后再存放回去。下面即是一段簡單的例子。

#include? < pthread.h >
#include?
< sched.h >
pthread_attr_t?attr;
pthread_t?tid;
sched_param?param;
int ?newprio = 20 ;

pthread_attr_init(
& attr);
pthread_attr_getschedparam(
& attr,? & param);
param.sched_priority
= newprio;
pthread_attr_setschedparam(
& attr,? & param);
pthread_create(
& tid,? & attr,?( void ? * )myfunction,?myarg);

[參考]
http://fanqiang.chinaunix.net/a4/b2/20010508/113838.html
http://fanqiang.chinaunix.net/a4/b8/20010811/0905001105.html

posted on 2006-08-04 18:46 泡泡牛 閱讀(1091) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            宅男精品视频| 亚洲手机视频| 欧美性感一类影片在线播放 | 欧美视频精品在线观看| 欧美另类变人与禽xxxxx| 免费黄网站欧美| 欧美精品v日韩精品v国产精品| 欧美激情四色 | 欧美超级免费视 在线| 欧美高清视频一区| 亚洲精品欧美| 欧美sm重口味系列视频在线观看| 欧美国产日韩精品免费观看| 亚洲人妖在线| 亚洲一区二区在线播放| 亚洲欧美日韩综合| 久久夜色精品国产| 欧美日韩国产精品一区| 国产视频一区在线观看| 在线免费观看日本一区| 日韩一级大片在线| 欧美在线亚洲在线| 亚洲激情网站| 久久精品国产2020观看福利| 欧美激情在线| 黄色资源网久久资源365| 在线一区视频| 欧美二区在线| 亚洲综合成人在线| 国产伦精品一区二区| 国产精品乱人伦一区二区| 亚洲乱码国产乱码精品精可以看 | 亚洲欧美中文日韩v在线观看| 久久色在线观看| 亚洲视频综合在线| 欧美成人一区二免费视频软件| 国产精品一区在线观看| 亚洲一区免费| 亚洲日本国产| 精品91久久久久| 亚洲精品裸体| 性欧美暴力猛交另类hd| 欧美1区2区3区| 亚洲天堂av在线免费观看| 久热成人在线视频| 国产欧美精品日韩精品| 亚洲美女在线视频| 久久精品中文字幕免费mv| 亚洲精选视频在线| 猛男gaygay欧美视频| 国产精品一区亚洲| 国产亚洲欧美日韩在线一区| 日韩一区二区免费看| 美女任你摸久久| 午夜精品免费在线| 国产精品网曝门| 亚洲欧美日韩国产综合精品二区 | 久久精品99国产精品酒店日本| 欧美精品在线视频| 最新亚洲电影| 亚洲成色精品| 久久久国产精品一区| 国产精品日韩精品欧美精品| 亚洲制服欧美中文字幕中文字幕| 亚洲美女在线观看| 欧美激情亚洲激情| 999亚洲国产精| 亚洲美女视频在线观看| 欧美日韩精品二区| 亚洲一区成人| 亚洲自拍偷拍麻豆| 国产婷婷色一区二区三区在线| 午夜精品一区二区在线观看| 亚洲一区三区视频在线观看| 国产精品久久久久久久久久久久久 | 国产精品入口夜色视频大尺度| 一区二区欧美亚洲| 这里只有精品视频| 国产女人aaa级久久久级| 久久精品二区三区| 久久九九精品| 亚洲精品免费看| 一区二区三区精密机械公司| 国产精品久久久一区二区| 欧美一区二区在线看| 久久成人资源| 老司机精品视频网站| 亚洲第一精品福利| 亚洲区免费影片| 国产精品视频一区二区三区 | 亚洲欧美一区二区三区极速播放| 国产精品99久久久久久久vr| 国产专区精品视频| 亚洲美女在线看| 国内精品免费在线观看| 欧美xxx成人| 欧美日本一区二区三区| 午夜精品偷拍| 欧美国产一区二区| 久久国产精品久久国产精品| 麻豆av一区二区三区| 亚洲午夜精品久久| 久久久亚洲精品一区二区三区| av不卡免费看| 欧美一区二区三区视频免费| 99视频在线观看一区三区| 午夜精品一区二区三区四区| 亚洲精品你懂的| 欧美亚洲免费在线| 亚洲色图制服丝袜| 久久久久久久久久久久久9999| 亚洲色图综合久久| 老司机精品久久| 欧美一区二区三区免费视| 麻豆91精品| 玖玖国产精品视频| 国产精品国色综合久久| 欧美激情四色| 国产午夜亚洲精品羞羞网站| 亚洲人成网站精品片在线观看 | 国产美女一区| 亚洲日本aⅴ片在线观看香蕉| 国产一区亚洲一区| 亚洲一二三四久久| 欧美日韩亚洲视频| 亚洲国产一区二区视频| 国产亚洲视频在线| 一区二区三区久久精品| 亚洲日韩欧美视频| 久久精品女人天堂| 久久久久成人精品| 国产精品综合网站| 亚洲在线1234| 亚洲在线日韩| 国产精品初高中精品久久| 亚洲全黄一级网站| 夜夜嗨av一区二区三区中文字幕 | 欧美三级视频在线观看| 欧美中文在线观看| 国产精品爽爽ⅴa在线观看| 亚洲美女性视频| 亚洲视频图片小说| 欧美日韩久久久久久| 亚洲另类黄色| 正在播放亚洲| 欧美日韩一区二区三区在线| 91久久久久久久久久久久久| 欧美黑人在线播放| 欧美大片一区二区三区| 悠悠资源网亚洲青| 久久久久久亚洲精品中文字幕 | 国产日韩欧美高清| 欧美影院视频| 久热成人在线视频| 亚洲三级国产| 欧美日韩日本视频| 亚洲视频一二三| 久久国产精品亚洲va麻豆| 国产在线不卡精品| 美女国内精品自产拍在线播放| 欧美国产综合视频| av成人手机在线| 国产精品久久久久久久久久直播| 亚洲一区免费| 欧美高清在线视频| 亚洲精品一二| 欧美系列亚洲系列| 欧美中文字幕精品| 亚洲国产精品电影| 亚洲欧美清纯在线制服| 黄色精品在线看| 欧美国产日韩一区二区| 一本色道婷婷久久欧美| 欧美在线观看视频一区二区三区| 狠狠色丁香婷婷综合影院| 日韩视频免费在线| 久久久久久久久久久久久9999| 亚洲国产高清一区二区三区| 欧美精品在线播放| 性久久久久久久久久久久| 欧美大片免费| 欧美一区二区啪啪| 亚洲免费播放| 国产一区二区精品久久91| 久久性色av| 亚洲欧美在线一区| 91久久亚洲| 麻豆91精品91久久久的内涵| 一区二区高清在线| 韩国欧美一区| 欧美日韩国产a| 久久国产精品久久久| 亚洲精品自在在线观看| 欧美激情aⅴ一区二区三区| 久久久国产精品一区| 99视频一区二区| 久久福利视频导航| 国产精品亚洲а∨天堂免在线| 欧美一区1区三区3区公司| 久久久人成影片一区二区三区观看 |