1、pthread_create
2、pthread_join
3、sem_init sem_destroy
4、sem_post sem_wait
5、所有線程可以共同訪問全局區
---------------------------------------------------------------------------------
【1】程序:靜態存儲在磁盤上
進程:程序動態執行時
線程:可以將進程劃分成多個子任務執行
【2】線程是依附於進程存在的
多個線程共同享有進程的內存空間
其中全局區可以被所有的線程訪問
【3】線程的創建
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
功能:在當前進程(主線程)內開啓一個新的線程(副線程)。
參數:thread:存儲線程ID
attr:NULL,默認的線程屬性:8M的棧空間
start:傳一個函數名,線程的執行體
arg:NULL
返回:成功返回0,失敗非0
注意:編譯時加 -pthread
【4】int pthread_join(pthread_t thread, void **retval);
功能:阻塞等待一個線程的退出,當該線程結束則喚醒等待
參數:thread:線程ID,指定等待的副線程
retval:承接pthread_exit返回的結果值或NULL
void pthread_exit(void *retval);
功能:用於結束一個線程
參數:retval用於給pthread_join返回一個數據,
注意:參數只能傳遞全局變量的地址或常量的地址或NULL
【5】無名信號量:解決線程同步問題,解決任務執行的先後順序
int sem_init(sem_t *sem, int pshared, unsigned int value);
功能:初始化一個信號量
參數:sem:被初始化的信號量
pshared:0用於線程間同步
value:信號量的初始值
int sem_destroy(sem_t *sem);
功能:銷燬信號量
int sem_wait(sem_t *sem);
功能:用於消耗一個信號量
int sem_post(sem_t *sem);
功能:用於產生一個信號量