Linux c線程

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);
        功能:用於產生一個信號量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章