《linux多線(xiàn)程編程》PPT課件

《linux多線(xiàn)程編程》PPT課件

ID:39358266

大小:222.61 KB

頁(yè)數(shù):28頁(yè)

時(shí)間:2019-07-01

《linux多線(xiàn)程編程》PPT課件_第1頁(yè)
《linux多線(xiàn)程編程》PPT課件_第2頁(yè)
《linux多線(xiàn)程編程》PPT課件_第3頁(yè)
《linux多線(xiàn)程編程》PPT課件_第4頁(yè)
《linux多線(xiàn)程編程》PPT課件_第5頁(yè)
資源描述:

《《linux多線(xiàn)程編程》PPT課件》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、linux多線(xiàn)程編程主要內(nèi)容Linux下線(xiàn)程概述linux線(xiàn)程實(shí)現(xiàn)1、Linux下線(xiàn)程概述進(jìn)程是系統(tǒng)中程序執(zhí)行和資源分配的基本單位。每個(gè)進(jìn)程有自己的數(shù)據(jù)段、代碼段和堆棧段。線(xiàn)程通常叫做輕型的進(jìn)程。線(xiàn)程是在共享內(nèi)存空間中并發(fā)執(zhí)行的多道執(zhí)行路徑,他們共享一個(gè)進(jìn)程的資源。因?yàn)榫€(xiàn)程和進(jìn)程比起來(lái)很小,所以相對(duì)來(lái)說(shuō),線(xiàn)程花費(fèi)更少的CPU資源。用戶(hù)地址空間線(xiàn)程一線(xiàn)程二線(xiàn)程三進(jìn)程圖1進(jìn)程與線(xiàn)程的關(guān)系線(xiàn)程按照其調(diào)度者可分為用戶(hù)級(jí)線(xiàn)程和內(nèi)核級(jí)線(xiàn)程兩種。(1)用戶(hù)級(jí)線(xiàn)程主要解決的是上下文切換的問(wèn)題,其調(diào)度算法和調(diào)度過(guò)程全部有用戶(hù)決定。(2)內(nèi)核級(jí)線(xiàn)程有內(nèi)核調(diào)度機(jī)制實(shí)現(xiàn)

2、?,F(xiàn)在大多數(shù)操作系統(tǒng)都采用用戶(hù)級(jí)線(xiàn)程和內(nèi)核級(jí)線(xiàn)程并存的方法。用戶(hù)級(jí)線(xiàn)程可與內(nèi)核級(jí)線(xiàn)程實(shí)現(xiàn)“一對(duì)一”,“一對(duì)多”的對(duì)應(yīng)關(guān)系。2、linux線(xiàn)程實(shí)現(xiàn)以下線(xiàn)程均為用戶(hù)級(jí)線(xiàn)程。在linux中,一般采用Pthread線(xiàn)程庫(kù)實(shí)現(xiàn)線(xiàn)程的訪問(wèn)與控制,由POSIX提出,具有良好的可移植性。2.1線(xiàn)程創(chuàng)建與退出創(chuàng)建線(xiàn)程使用pthread_create函數(shù)。在線(xiàn)程創(chuàng)建以后,就開(kāi)始運(yùn)行相關(guān)的線(xiàn)程函數(shù)。線(xiàn)程退出時(shí)使用函數(shù)pthread_exit,是線(xiàn)程的主動(dòng)行為。注意進(jìn)程退出時(shí)使用exit函數(shù),線(xiàn)程中用pthread_exit替代exit。由于一個(gè)進(jìn)程中的多個(gè)線(xiàn)程共享數(shù)據(jù)

3、段,因此通常在線(xiàn)程退出后,退出線(xiàn)程所占用的資源并不會(huì)隨線(xiàn)程結(jié)束而釋放。所有需要pthread_join函數(shù)來(lái)等待線(xiàn)程結(jié)束,類(lèi)似于wait系統(tǒng)調(diào)用。創(chuàng)建進(jìn)程:#includepthread_create(pthread_t*thread,pthread_attr_t*attr,void*(*start_routine)(void*),void*arg)thread:線(xiàn)程標(biāo)識(shí)符attr:線(xiàn)程屬性設(shè)置start_routine:線(xiàn)程函數(shù)起始地址arg:傳遞給start_routine的參數(shù)進(jìn)程退出:#include

4、.h>pthread_exit(void*retval)retval:pthread_exit調(diào)用者線(xiàn)程的返回值,可由其他函數(shù)和pthread_join來(lái)檢測(cè)獲取。等待進(jìn)程退出:#includepthread_join(pthread_t*th,void**thread_return)th:等待線(xiàn)程的標(biāo)識(shí)符thread_return:用戶(hù)定義指針,用來(lái)存儲(chǔ)被等待線(xiàn)程的返回值線(xiàn)程實(shí)例見(jiàn):thread.c2.2修改線(xiàn)程屬性在thread_creat函數(shù)中有設(shè)置線(xiàn)程屬性參數(shù),這些屬性包括綁定屬性、分離屬性、堆棧地址、堆棧大小、優(yōu)先

5、級(jí)。系統(tǒng)默認(rèn)屬性為非綁定、非分離、缺省1M的堆棧、與父進(jìn)程同樣級(jí)別的優(yōu)先級(jí)。分別介紹綁定屬性和分離屬性。1、綁定屬性在linux系統(tǒng)中,可實(shí)現(xiàn)一個(gè)用戶(hù)級(jí)線(xiàn)程與一個(gè)內(nèi)核級(jí)線(xiàn)程相對(duì)應(yīng)的“一對(duì)一”線(xiàn)程機(jī)制。綁定屬性是指一個(gè)用戶(hù)級(jí)線(xiàn)程固定的分配給一個(gè)內(nèi)核級(jí)線(xiàn)程。非綁定屬性則是指用戶(hù)級(jí)線(xiàn)程與內(nèi)核級(jí)線(xiàn)程的關(guān)系不是始終固定的,而是由系統(tǒng)來(lái)控制分配。2、分離屬性分離屬性是用來(lái)決定一個(gè)線(xiàn)程以什么樣的方式來(lái)終止自己。在非分離情況下,當(dāng)一個(gè)線(xiàn)程結(jié)束時(shí),它所占用的系統(tǒng)資源并沒(méi)有完全釋放,也沒(méi)有真正終止。只有當(dāng)pthread_join()函數(shù)返回時(shí),該線(xiàn)程才釋放自己占用的

6、資源。而在分離情況下,一個(gè)線(xiàn)程結(jié)束時(shí)會(huì)立即釋放它所占用的資源。3、屬性設(shè)置屬性設(shè)置是由一定函數(shù)來(lái)完成的,通常調(diào)用pthread_attr_init函數(shù)進(jìn)行初始化。設(shè)置綁定屬性的函數(shù)為pthread_attr_setscope,設(shè)置分離屬性的函數(shù)是pthread_attr_setdetachstate,設(shè)置線(xiàn)程優(yōu)先級(jí)的相關(guān)函數(shù)pthread_attr_getschdparm(獲取線(xiàn)程優(yōu)先級(jí))和pthread_attr_setschedparam(設(shè)置線(xiàn)程優(yōu)先級(jí))。在設(shè)置完成屬性后,調(diào)用pthread_creat函數(shù)創(chuàng)建線(xiàn)程。線(xiàn)程屬性初始化:#inc

7、ludeintpthread_attr_init(pthread_attr_t*attr)attr:線(xiàn)程屬性返回值:成功0,錯(cuò)誤-1。設(shè)置綁定屬性:#includepthread_attr_setscope(pthread_attr_t*attr,initscope)attr:線(xiàn)程屬性scope:PTHREAD_SCOPE_SYSTEM(綁定)PTHREAD_SCOPE_PRCESS(非綁定)返回值:成功0,錯(cuò)誤-1。設(shè)置分離屬性:#includepthread_attr_sets

8、etdetachstate(pthread_attr_t*attr,initdetachstate)attr:線(xiàn)程屬性detachsta

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。