linux-14-線程---end

1.1線程的概念

線程-隸屬于進程伦糯,是進程中的程序流

在操作系統(tǒng)中支持多進程的,而每個進程的內(nèi)部支持多個線程喂击,多個線程并行

進程是重量級單位载慈,每個進程都需要獨立的內(nèi)存空間等資源珍手,新建進程對于資源的消耗比較大琳要,線程是輕量級的,不需要申請獨立的內(nèi)存等資源稚补,但是每個線程也有一個獨立的棧區(qū)课幕,線程實際上更多的是共享進程中的資源

1.2 線程的相關函數(shù)

1)pthread_create函數(shù)

pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine) (void*),void *arg);

第一個參數(shù):用于存放線程id

第二個參數(shù):線程的屬性,直接給0即可

第三個參數(shù):線程所調(diào)用的函數(shù)

第四個參數(shù):給線程調(diào)用函數(shù)傳遞的實參

返回值:成功返回0杜秸,失敗返回錯誤編號

函數(shù)功能:用于創(chuàng)建一個新的線程

注意:1)在編譯鏈接時需要加選項 -lpthread

2)但程序結束時润绎,所有子線程都結束了

創(chuàng)建出來的線程與主線程具有同等的優(yōu)先級,不一定誰先執(zhí)行

2)pthread_join函數(shù)

int pthread_join(pthread,void **retval);

第一個參數(shù):指定所要等待的線程id

第二個參數(shù):用于接受所等待線程的退出碼返回值:成功返回0呢蛤,失敗返回錯誤編號函數(shù)功能:等待thread所指向的線程結束

3)pthread_self函數(shù)#includepthread_tpthread_self(void);功能:獲取正在執(zhí)行的線程id棍郎,返回值就是線程的id

4)pthread_exit函數(shù)#includevoid pthread_exit(void *retval);

參數(shù):用于返回一個數(shù)據(jù)

功能:終止正在調(diào)用的線程

exit函數(shù)涂佃,用于終止一個進程

1.3線程的狀態(tài)線程有兩種狀態(tài)

1)非分離狀態(tài) pthread_join對于非分離狀態(tài)的線程來說,線程資源的回收需要等到join函數(shù)結束之后

2)分離狀態(tài) pthread_detach對于分離狀態(tài)的線程來說抚笔,線程結束后資源馬上回收侨拦,無法使用pthread_join函數(shù)等待的

3)pthread_detach函數(shù)

int pthread_detach(pthread_t thread);

參數(shù):線程id

返回值:成功返回0,失敗返回錯誤編號

功能:用于分離線程

2.線程

2.1線程的取消1)pthread_cancel函數(shù)

int pthread_cancel(pthread_t thread);

參數(shù):要取消的線程id

回值:成功返回0膨蛮,失敗返回錯誤編號

功能:對thread指向的線程發(fā)送取消的請求

2)pthread_setcancelstate函數(shù)

int pthread_setcancelstate(int state,int *oldstate);

第一個參數(shù):設置取消狀態(tài)


第一個參數(shù):設置取消狀態(tài)

PTHREAD_CANCEL_ENABLE 可以被取消

PTHREAD_CANCEL_DISABLE 不可以被取消

第二個參數(shù):帶出原來的取消狀態(tài)

返回值:成功返回0;失敗返回錯誤編號

函數(shù)功能:設置線程是否允許被取消

3)pthread_setcanceltype函數(shù)

int pthread_setcanceltype(int type,int *oldtype);

第一個參數(shù):設置新的類型

PTHREAD_CANCEL_DEFERRED 推到下一個取消點 取消

PTHREAD_CANCEL_ASYNCHRONOUS 立即取消

第二個參數(shù):帶出原來的取消類型

返回值:成功返回0誉察;失敗返回錯誤編號

函數(shù)功能:設置線程何時被取消

2.2 線程的同步

1)概念:

多線程之間共享進程的資源惹谐,多個線程同時訪問相同的資源時氨肌,需要相互協(xié)調(diào),以防止出現(xiàn)數(shù)據(jù)的不一致和不完整的問題怎囚,線程之間的協(xié)調(diào)和通信 叫做 線程的同步

2)線程同步的思路

訪問共享資源時恳守,不能并行,而是創(chuàng)新

3)線程同步的解決方案

在線程中催烘,提供了互斥量(互斥鎖)實現(xiàn)線程同步

4)使用互斥量實現(xiàn)線程同步的步驟

a 定義互斥量

pthread_mutex_t lock;

b 初始化互斥量

pthread_mutex_init(&lock,0);

c 使用互斥量進行加鎖

pthread_mutex_lock(&lock);

d 使用共享資源

e 使用互斥量進行解鎖

pthread_mutex_unlock(&lock)

f 銷毀互斥量

pthread_mutex_destroy(&lock)

5)使用信號量實現(xiàn)線程的同步

信號量 --就是一個計數(shù)器颗圣,用于控制同時訪問共享資源的進程/線程數(shù),如果信號量的值是1奔则,等同于互斥量

使用信號量實現(xiàn)線程同步的流程

a 定義信號量

sem_t sem;

b 初始化信號量

sem_init(&sem,o/*控制線程*/,最大值/*個數(shù)*/);

c 獲取一個信號量(相當于計數(shù)器減1)

sem_wait(&sem);

d 訪問共享資源

e 釋放一個信號量(相當于計數(shù)器加1)

sem_post(&sem)

f 銷毀信號量

sem_destory(&sem)

6)條件變量 以及 生產(chǎn)者-消費者模型 DMS項目

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末易茬,一起剝皮案震驚了整個濱河市及老,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌食铐,老刑警劉巖僧鲁,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異斟叼,居然都是意外死亡,警方通過查閱死者的電腦和手機忽孽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門兄一,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萤悴,“玉大人,你說我怎么就攤上這事》驯。” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵伟众,是天一觀的道長召廷。 經(jīng)常有香客問我竞慢,道長,這世上最難降的妖魔是什么筹煮? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任败潦,我火速辦了婚禮,結果婚禮上檬洞,老公的妹妹穿的比我還像新娘沟饥。我一直安慰自己环戈,他們只是感情好澎灸,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著性昭,像睡著了一般拦止。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糜颠,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天汹族,我揣著相機與錄音,去河邊找鬼其兴。 笑死顶瞒,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的元旬。 我是一名探鬼主播榴徐,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匀归!你這毒婦竟也來了?” 一聲冷哼從身側響起穆端,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤袱贮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后体啰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攒巍,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年荒勇,在試婚紗的時候發(fā)現(xiàn)自己被綠了柒莉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡枕屉,死狀恐怖常柄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搀擂,我是刑警寧澤西潘,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站哨颂,受9級特大地震影響喷市,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜威恼,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一品姓、第九天 我趴在偏房一處隱蔽的房頂上張望寝并。 院中可真熱鬧,春花似錦腹备、人聲如沸衬潦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镀岛。三九已至,卻和暖如春友驮,著一層夾襖步出監(jiān)牢的瞬間漂羊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工卸留, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留走越,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓耻瑟,卻偏偏與公主長得像旨指,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匆赃,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 轉自:Youtherhttps://www.cnblogs.com/youtherhome/archive/201...
    njukay閱讀 1,615評論 0 52
  • 線程基礎 線程是進程的一個執(zhí)行單元淤毛,執(zhí)行一段程序片段,線程共享全局變量算柳;線程的查看可以使用命令或者文件來進行查看;...
    秋風弄影閱讀 738評論 0 0
  • 一姓言、線程的創(chuàng)建和調(diào)度 1.線程是程序執(zhí)行的某一條指令流的映像瞬项。 為了進一步減少處理機制的空轉時間,支持多處理器及減...
    穹藍奧義閱讀 1,110評論 2 5
  • 簡介 線程創(chuàng)建 線程屬性設置 線程參數(shù)傳遞 線程優(yōu)先級 線程的數(shù)據(jù)處理 線程的分離狀態(tài) 互斥鎖 信號量 一 線程創(chuàng)...
    第八區(qū)閱讀 8,563評論 1 6
  • linux線程同步 信號燈:與互斥鎖和條件變量的主要不同在于"燈"的概念何荚,燈亮則意味著資源可用囱淋,燈滅則意味著不可用...
    鮑陳飛閱讀 686評論 0 2