色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 學習筆記 > Linux線程屬性有哪些?看了這個就知道

Linux線程屬性有哪些?看了這個就知道 時間:2018-08-17      來源:未知

線程屬性標識符:pthread_attr_t 包含在 pthread.h 頭文件中。

[c]view plaincopy

1. //線程屬性結構如下:

2. typedefstruct

3. {

4.intetachstate;//線程的分離狀態

5.intschedpolicy;//線程調度策略

6.structsched_paramschedparam;//線程的調度參數

7.intinheritsched;//線程的繼承性

8.intscope;//線程的作用域

9.size_tguardsize;//線程棧末尾的警戒緩沖區大小

10.intstackaddr_set; //線程的棧設置

11. void*stackaddr;//線程棧的位置

12.size_tstacksize;//線程棧的大小

13.}pthread_attr_t;

屬性值不能直接設置,須使用相關函數進行操作,初始化的函數為

pthread_attr_init,這個函數必須在pthread_create函數之前調用。之后須用pthread_attr_destroy函數來釋放資源。線程屬性主要包括如下屬性:作用域(scope)、棧尺寸(stack size)、棧地址(stack address)、優先級

(priority)、分離的狀態(detached state)、調度策略和參數(scheduling policy and parameters)。默認的屬性為非綁定、非分離、缺省1M的堆棧、與父進程同樣級別的優先級。

一、線程的作用域(scope)

作用域屬性描述特定線程將與哪些線程競爭資源。線程可以在兩種競爭域內競爭資源:

1. 進程域(process scope):與同一進程內的其他線程。

2. 系統域(system scope):與系統中的所有線程。一個具有系統域的線程將與整個系統中所有具有系統域的線程按照優先級競爭處理器資源,進行調度。

3. Solaris系統,實際上,從 Solaris 9 發行版開始,系統就不再區分這兩個范圍。

二、線程的綁定狀態(binding state)

輕進程(LWP:Light Weight Process)關于線程的綁定,牽涉到另外一個概念:輕進程(LWP:Light Weight Process):輕進程可以理解為內核線程,它位于用戶層和系統層之間。系統對線程資源的分配、對線程的控制是通過輕進程來實現的,一個輕進程可以控制一個或多個線程。

1. 非綁定狀態

默認狀況下,啟動多少輕進程、哪些輕進程來控制哪些線程是由系統來控制的,這種狀況即稱為非綁定的。

2. 綁定狀態

綁定狀況下,則顧名思義,即某個線程固定的"綁"在一個輕進程之上。被綁定的線程具有較高的響應速度,這是因為CPU時間片的調度是面向輕進程的,綁定的線程可以保證在需要的時候它總有一個輕進程可用。通過設置被綁定的輕進程的優先級和調度級可以使得綁定的線程滿足諸如實時反應之類的要求。

三、線程的分離狀態(detached state)

1. 線程的分離狀態決定一個線程以什么樣的方式來終止自己。

2. 非分離狀態

線程的默認屬性是非分離狀態,這種情況下,原有的線程等待創建的線程結束。只有當pthread_join()函數返回時,創建的線程才算終止,才能釋放自己占用的系統資源。

3. 分離狀態

分離線程沒有被其他的線程所等待,自己運行結束了,線程也就終止了,馬上釋放系統資源。應該根據自己的需要,選擇適當的分離狀態。

4. 線程分離狀態的函數:pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)。

第二個參數可選為PTHREAD_CREATE_DETACHED(分離線程)和 PTHREAD _CREATE_JOINABLE(非分離線程)。

這里要注意的一點是,如果設置一個線程為分離線程,而這個線程運行又非常快,它很可能在pthread_create函數返回之前就終止了,它終止以后就可能將線程號和系統資源移交給其他的線程使用,這樣調用pthread_create的線程就得到了錯誤的線程號。要避免這種情況可以采取一定的同步措施,最簡單的方法之一是可以在被創建的線程里調用pthread_cond_timewait函數,讓這個線程等待一會兒,留出足夠的時間讓函數pthread_create返回。設置一段等待時間,是在多線程編程里常用的方法。但是注意不要使用諸如wait()之類的函數,它們是使整個進程睡眠,并不能解決線程同步的問題。

四、線程的優先級(priority)

1. 新線程的優先級為默認為0。

2. 新線程不繼承父線程調度優先級(PTHREAD_EXPLICIT_SCHED)

3. 僅當調度策略為實時(即SCHED_RR或SCHED_FIFO)時才有效,并可以在運行時通過pthread_setschedparam()函數來改變,缺省為0。

五、線程的棧地址(stack address)

1. POSIX.1定義了兩個常量_POSIX_THREAD_ATTR_STACKADDR 和_POSIX_THREAD_ATTR_STACKSIZE檢測系統是否支持棧屬性。

2. 也可以給sysconf函數傳遞_SC_THREAD_ATTR_STACKADDR或

_SC_THREAD_ATTR_STACKSIZE來進行檢測。

3. 當進程棧地址空間不夠用時,指定新建線程使用由malloc分配的空間作為自己的棧空間。通過pthread_attr_setstackaddr和pthread_attr_getstackaddr兩個函數分別設置和獲取線程的棧地址。傳給pthread_attr_setstackaddr函數的地址是緩沖區的低地址(不一定是棧的開始地址,棧可能從高地址往低地址增長)。

六、線程的棧大小(stack size)

1. 當系統中有很多線程時,可能需要減小每個線程棧的默認大小,防止進程的地址空間不夠用

2. 當線程調用的函數會分配很大的局部變量或者函數調用層次很深時,可能需要增大線程棧的默認大小。

3. 函數pthread_attr_getstacksize和 pthread_attr_setstacksize提供設置。

七、線程的棧保護區大小(stack guard size)

1. 在線程棧頂留出一段空間,防止棧溢出。

2. 當棧指針進入這段保護區時,系統會發出錯誤,通常是發送信號給線程。

3. 該屬性默認值是PAGESIZE大小,該屬性被設置時,系統會自動將該屬性大小補齊為頁大小的整數倍。

4. 當改變棧地址屬性時,棧保護區大小通常清零。

八、線程的調度策略(schedpolicy)

POSIX標準指定了三種調度策略:先入先出策略 (SCHED_FIFO)、循環策略 (SCHED_RR) 和自定義策略 (SCHED_OTHER)。SCHED_FIFO 是基于隊列的調度程序,對于每個優先級都會使用不同的隊列。SCHED_RR 與 FIFO 相似,不同的是前者的每個線程都有一個執行時間配額。SCHED_FIFO 和 SCHED_RR 是對 POSIX Realtime 的擴展。SCHED_OTHER 是缺省的調度策略。

1. 新線程默認使用 SCHED_OTHER 調度策略。線程一旦開始運行,直到被搶占或者直到線程阻塞或停止為止。

2. SCHED_FIFO

如果調用進程具有有效的用戶 ID 0,則爭用范圍為系統

(PTHREAD_SCOPE_SYSTEM) 的先入先出線程屬于實時 (RT) 調度類。如果這些線程未被優先級更高的線程搶占,則會繼續處理該線程,直到該線程放棄或阻塞為止。對于具有進程爭用范圍 (PTHREAD_SCOPE_PROCESS)) 的線程或其調用進程沒有有效用戶 ID 0 的線程,請使用 SCHED_FIFO,SCHED_FIFO 基于 TS 調度類。

3. SCHED_RR

如果調用進程具有有效的用戶 ID 0,則爭用范圍為系統

(PTHREAD_SCOPE_SYSTEM)) 的循環線程屬于實時 (RT) 調度類。如果這些線程未被優先級更高的線程搶占,并且這些線程沒有放棄或阻塞,則在系統確定的時間段內將一直執行這些線程。對于具有進程爭用范圍 (PTHREAD_SCOPE_PROCESS)

的線程,請使用 SCHED_RR(基于 TS 調度類)。此外,這些線程的調用進程沒有有效的用戶 ID 0。

九、線程并行級別(concurrency)

應用程序使用 pthread_setconcurrency() 通知系統其所需的并發級別。

上一篇:進程和線程關系及區別

下一篇:進程與線程棧大小的調整

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 麻豆传媒免费看 | 久久99热精品免费观看 | 欧美日韩精品一区二区在线视频 | 三年成全免费高清大全 | 亚洲精品无码鲁网午夜 | 欧州精品 | 免费爆乳精品一区二区 | 中文字幕av无码不卡 | 在线免费一区 | 免费久久网 | 亚洲香蕉免费有线视频 | 人妻久久久一区二区三区 | 粗大猛烈进出高潮视频免费看 | 视频久久免费 | 午夜久久久久久久久久久久久捆绑 | 水蜜桃成视频人在线播放 | 国产精品久久久午夜夜伦鲁鲁 | 办公室啪啪激烈高潮动态图 | 911精产国品一二三区在线观看 | 韩国免费a级毛片久久 | 韩国一级片在线观看 | www..com1111桃花岛| 好黄好污美女裸体网站 | 欧美内射深喉中文字幕 | 精品无码国产一区二区三区AV | 欧美一线高本道高清免费 | ye321夜色资源网 | 精品人妻潮喷久久久又裸又黄 | 在线精品视频一区二区三四 | 超薄肉色丝袜一二三四区 | 午夜福利YW在线观看2020 | 日本黄色大片在线观看 | 欧美人与动牲交视频在线观看 | 成人午夜无码精品免费看 | 章节把亲妺妺强h怀孕小说 夜夜揉揉日日人人青青 | 免费无码黄在线观看www | 欧美13处交 | 日韩亚洲欧美精品 | 日韩加勒比无码人妻系列 | 最新无码人妻在线不卡 | 四虎福利影院 |