色母粒對(duì)網(wǎng)站的建議和優(yōu)化
目錄
- 一、概念
- 二、進(jìn)程與線程的區(qū)別???
- 三、線程資源
- 四、函數(shù)接口
- 4.1 線程創(chuàng)建
- 4.2 線程退出
- 4.3 線程回收
- 4.3.1 阻塞回收
- 4.3.2 非阻塞回收
- 4.4 pthread_create之傳參
- 4.5 練習(xí)
一、概念
是一個(gè)輕量級(jí)的進(jìn)程,為了提高系統(tǒng)的性能引入線程。
進(jìn)程與線程都參與cpu的統(tǒng)一調(diào)度。
在同一進(jìn)程中創(chuàng)建的所有線程共享該進(jìn)程的地址空間
二、進(jìn)程與線程的區(qū)別???
- 相同點(diǎn)
都為操作系統(tǒng)提供了 并發(fā) 執(zhí)行能力 - 不同點(diǎn)
- 調(diào)度和資源
線程是系統(tǒng)調(diào)度的最小單位,進(jìn)程是資源分配的最小單位;同一個(gè)進(jìn)程創(chuàng)建的多個(gè)線程共享進(jìn)程的資源; - 地址空間方面
進(jìn)程的地址空間相互獨(dú)立;在同一進(jìn)程中創(chuàng)建的所有線程共享該進(jìn)程的地址空間 - 通信方面
線程通信相對(duì)簡(jiǎn)單,只需要通過(guò)全局變量可以實(shí)現(xiàn),但是需要考慮臨界資源訪問(wèn)的問(wèn)題;進(jìn)程通信比較復(fù)雜,需要借助進(jìn)程間的通信機(jī)制(借助3g-4g內(nèi)核空間) - 安全性方面
線程安全性差一些,當(dāng)進(jìn)程結(jié)束時(shí)會(huì)導(dǎo)致所有線程退出;進(jìn)程相對(duì)安全
- 調(diào)度和資源
三、線程資源
- 共享的資源
可執(zhí)行的指令、靜態(tài)數(shù)據(jù)、進(jìn)程中打開的文件描述符、信號(hào)處理函數(shù)、當(dāng)前工作目錄、用戶ID、用戶組ID - 私有的資源
線程ID (TID)、PC(程序計(jì)數(shù)器)和相關(guān)寄存器、堆棧、錯(cuò)誤號(hào) (errno)、信號(hào)掩碼和優(yōu)先級(jí)、執(zhí)行狀態(tài)和屬性
四、函數(shù)接口
4.1 線程創(chuàng)建
pthread_create:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
- 功能:創(chuàng)建線程
- 參數(shù)
- thread: 線程標(biāo)識(shí)
- attr: 線程屬性, NULL:代表設(shè)置默認(rèn)屬性
- start_routine:函數(shù)名:代表線程函數(shù)
- arg: 用來(lái)給前面函數(shù)傳參
- 返回值
- 成功:0
- 失敗:錯(cuò)誤碼
4.2 線程退出
pthread_exit:
int pthread_exit(void *value_ptr)
- 功能:用于退出線程的執(zhí)行
- 參數(shù):value_ptr:線程退出時(shí)返回的值(任意類型),若沒(méi)有返回值,默認(rèn)選擇NULL就可
- 返回值
- 成功 : 0
- 失敗:errno
4.3 線程回收
4.3.1 阻塞回收
pthread_join:
int pthread_join(pthread_t thread, void **value_ptr)
- 功能:用于等待一個(gè)指定的線程結(jié)束,阻塞函數(shù)
- 參數(shù):
- thread:創(chuàng)建的線程對(duì)象
- value_ptr:指針*value_ptr指向線程返回的參數(shù)
- 返回值:
- 成功 :0
- 失敗:errno
4.3.2 非阻塞回收
pthread_detach:
int pthread_detach(pthread_t thread);
- 功能:讓線程結(jié)束時(shí)自動(dòng)回收線程資源,讓線程和主線程分離
- 參數(shù):thread(線程ID)
例子:
pthread_detach:👉百度百科鏈接
4.4 pthread_create之傳參
4.5 練習(xí)
通過(guò)線程實(shí)現(xiàn)數(shù)據(jù)的交互,主線程循環(huán)從終端輸入,線程函數(shù)將數(shù)據(jù)循環(huán)輸出,當(dāng)輸入quit結(jié)束程序。