Linux作業系統入門 執行緒管理

2021-07-08 10:55:44 字數 2440 閱讀 8165

1.程序與執行緒

程序是作業系統分配資源的單位,執行緒是作業系統排程的單位;

每個程序都有自己的資料段、**段、堆疊段,執行緒在記憶體空間共享乙個程序資源;

執行緒間彼此切換所需的時間遠遠小於程序間彼此切換,所以稱執行緒為輕量級程序。

2.執行緒建立函式pthread_create()

函式原型:

int  pthread_create((pthread_t  *tid,  pthread_attr_t  *attr,  void  *(*start_routine)(void  *),  void  *arg)

引數說明:

tid:  所要建立的子執行緒識別符號;

attr:執行緒屬性設定;

arg:傳遞給start_routine的引數;

返回值說明:

建立成功,返回0;出錯,返回-1。

函式使用說明:

呼叫該函式,建立子程序,建立成功的子程序將進入start_routine()函式中執行

3.執行緒掛起函式pthread_join()

函式原型:

int pthread_join(pthread_t thread, void **retval);

引數說明:

thread: 等待執行緒的

識別符號,即執行緒id;

retval: 使用者定義的指標,用來儲存被等待執行緒的返回值。

返回值說明:

0代表成功。 失敗,返回的則是錯誤號。

使用說明 :

pthread_join()函式,使乙個執行緒等待另乙個執行緒結束。即以阻塞的方式等待thread指定的執行緒結束。

當函式返回時,被等待執行緒的資源被收回。                

**中如果沒有pthread_join主線程會很快結束從而使整個程序結束,從而使建立的執行緒沒有機會開始執行就結束了。

加入pthread_join後,主線程會一直等待直到等待的執行緒結束自己才結束,使建立的執行緒有機會執行。

4.執行緒結束函式pthread_exit()

函式原型:

void  pthread_exit(void  *retval)

引數說明:

執行緒結束後返回值存入retval中

5.其他函式

pthread_self();     返回執行緒的

syscall(sys_gettid);  返回執行緒的pid

6.示例一

# include # include # include# include# include# includeint counter=0;

void thread1 (int * counter)

}void thread2 (int * counter)

}int main(void)

else if(ret==-1)

printf("main\n");

printf("%lu\n",thrd1);

ret=pthread_create(&thrd2,null,(void *)thread2,(void *)&counter);

if(ret)

else

printf("pthread2 success\n");

printf("main\n");

printf("%lu\n",thrd2);

pthread_join(thrd2,null); //等待子執行緒2

pthread_join(thrd1,null); //等待子執行緒1

7. 示例二

/* 

* posix 下執行緒控制的實驗程式完整版 1.2 7 */

#include #include #include #include #include #define max_thread 3 /* 執行緒的個數 */

/**/

unsigned long long main_counter, counter[max_thread]; /* unsigned long long是比long還長的整數 */

void* thread_worker(void*);

int main(int argc, char* argv)

; /* 存放每個執行緒的id */

Linux作業系統 執行緒

執行緒 在乙個程式裡的乙個執行路線就叫做執行緒。更準確的定義是 執行緒是乙個程序內部的控制序列。一切程序至少都有乙個執行執行緒。程序和執行緒 程序是資源競爭的基本單位。執行緒是程式執行的最小單位。執行緒共享程序資料,但也擁有自己的一部分資料 執行緒id,一組暫存器,棧,errno,訊號遮蔽字,排程優...

Linux作業系統入門

1 linux是乙個開源的免費的作業系統。一般是部署在伺服器上。2 具有很高的安全性,穩定性非常高。3 基於命令來作業系統地特定功能,一切以檔案的形式存在。4 樹形的檔案儲存形式,根目錄為 5 系統的使用者 使用者,使用者歸屬於系統組或者是使用者組。1 ls 查詢當前目錄下所有檔案和資料夾的命令 2...

Linux作業系統入門

1 為了方便演示和自我練習,先安裝虛擬機器軟體 2 常用的虛擬機器軟體 a virtualbox b vmware worksation c virtual pc3 在安裝虛擬機器軟體的時候,如果安裝失敗,可能是未在bi0s中開啟虛擬化bios security virtualization4 開始...