Linux多線程編程多核編程 (2)

Linux多線程編程多核編程 (2)

ID:38841452

大?。?06.81 KB

頁數(shù):9頁

時間:2019-06-20

Linux多線程編程多核編程 (2)_第1頁
Linux多線程編程多核編程 (2)_第2頁
Linux多線程編程多核編程 (2)_第3頁
Linux多線程編程多核編程 (2)_第4頁
Linux多線程編程多核編程 (2)_第5頁
資源描述:

《Linux多線程編程多核編程 (2)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、Linux多線程編程IEEEPOSIX標(biāo)準(zhǔn)p1003.1c(Pthreads)定義了處理線程的一系列C語言類型的API。在Linux中,線程一般被認(rèn)為是“輕量級的進(jìn)程”。Linux創(chuàng)建進(jìn)程所使用的函數(shù)是fork()或者vfork()。而對線程的創(chuàng)建和管理Linux可以使用POSIX的線程庫pthreads提供的APIs。使用fork()創(chuàng)建進(jìn)程和使用POSIX線程庫差別:使用fork()創(chuàng)建進(jìn)程的特點(diǎn):代價昂貴,通常子進(jìn)程需要拷貝父進(jìn)程的整個上下文,比如數(shù)據(jù)等。進(jìn)程間的通信方式比較復(fù)雜,比如使用管道、消息、共享內(nèi)存等方法。操作系統(tǒng)在實(shí)現(xiàn)進(jìn)程間的切換比線程切換更費(fèi)時。使用POSIXpthre

2、ads庫創(chuàng)建線程的特點(diǎn):線程可使用存在于進(jìn)程中的資源。線程間的通信方式更容易,比如通過進(jìn)程中的變量,可以讓多個線程共享數(shù)據(jù)。操作系統(tǒng)對線程的切換比對進(jìn)程的切換更容易和快速。Linux多線程編程線程的創(chuàng)建pthreads線程庫中提供的創(chuàng)建線程的函數(shù)是pthread_create()#includeintpthread_create(pthread_t*thread,pthread_attr_t*attr,void*(*start_routine)(void*),void*arg);線程的退出在線程的處理函數(shù)中,可以顯示的調(diào)用pthread_exit()結(jié)束線程執(zhí)行,也可

3、以不調(diào)用pthread_exit(),而只是讓線程處理程序返回。voidpthread_exit(void*retval);除了pthread_exit()函數(shù),可以讓當(dāng)前調(diào)用pthread_exit()的線程顯示地退出外,線程也可以使用pthread_cancel()函數(shù)終止其他線程的執(zhí)行。intpthread_cancel(pthread_tthread);等待線程結(jié)束pthread_join()函數(shù)會掛起創(chuàng)建線程的線程的執(zhí)行,直到等待到想要等待的子線程。intpthread_join(pthread_tth,void**thread_return);線程的分離主線程創(chuàng)建子線程,且子線

4、程本身自己有自我回收內(nèi)存資源的能力。intpthread_detach(pthread_tth);獲得當(dāng)前線程標(biāo)志使用pthread_self()函數(shù)可以獲得當(dāng)前線程的標(biāo)志,pthread_self()的返回值就是當(dāng)前線程的標(biāo)志。pthread_tpthread_self(void);線程互斥和同步——Mutex原子性。對mutex的加鎖和解鎖操作是原子的,一個線程進(jìn)行mutex操作的過程中,其他線程不能對同一個mutex進(jìn)行其他操作。單一性。擁有mutex的線程除非釋放mutex,否則其他線程不能擁有此mutex。非忙等待。等待mutex的線程處于等待狀態(tài),直到要等待的mutex處于未加

5、鎖狀態(tài),這時操作系統(tǒng)負(fù)責(zé)喚醒等待此mutex的線程。POSIX線程庫對mutex提供了以下函數(shù)進(jìn)行操作:intpthread_mutex_init(pthread_mutex_t*mutex,constpthread_mutexattr_t*mutexattr);intpthread_mutex_lock(pthread_mutex_t*mutex);intpthread_mutex_unlock(pthread_mutex_t*mutex);intpthread_mutex_destroy(pthread_mutex_t*mutex);

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

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

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