linux的執行緒程式設計1

2021-06-22 09:33:25 字數 1581 閱讀 5669

多執行緒和多程序有很多區別的。其中之一就是,多程序是linux核心本身所支援的,而多執行緒則需要相應的動態庫進行支援。對於程序而言,資料之間都是相互隔離的,而多執行緒則不同,不同的執行緒除了堆疊空間之外所有的資料都是共享的.

編譯時要用到  -lpthread

#include #include void *mythread1(void)

}void *mythread2(void)

}int main()

/*建立執行緒2*/

ret = pthread_create(&id2, null, (void*)mythread2, null);

if (ret)

pthread_join(id1, null);

pthread_join(id2, null);

return 0;

}

addia@addia-lenovo-b470:~/演示**/多執行緒$ ./creat

bash: ./creat: 沒有那個檔案或目錄

addia@addia-lenovo-b470:~/演示**/多執行緒$ ./create

this is the 1st pthread,created by zieckey.

this is the 2st pthread,created by zieckey.

this is the 1st pthread,created by zieckey.

this is the 2st pthread,created by zieckey.

this is the 1st pthread,created by zieckey.

this is the 2st pthread,created by zieckey.

this is the 1st pthread,created by zieckey.

this is the 2st pthread,created by zieckey.

1,pthread_create()

#include int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
若成功則返回0,否則返回出錯編號

第乙個引數為指向執行緒識別符號的指標。

第二個引數用來設定執行緒屬性。

第三個引數是執行緒執行函式的起始位址。

最後乙個引數是執行函式的引數。

另外,在編譯時注意加上-lpthread引數,以呼叫靜態鏈結庫。因為pthread並非linux系統的預設庫

2,pthread_join()

#include int pthread_join(pthread_t thread, void **retval);
第乙個引數為被等待的執行緒識別符號,第二個引數為乙個使用者定義的指標,它可以用來儲存被等待執行緒的返回值。

這個函式是乙個執行緒阻塞的函式,呼叫它的函式將一直等待到被等待的執行緒結束為止,當函式返回時,被等待執行緒的資源被收回。

多執行緒程式設計(1) 執行緒的啟動

在例項化thread的例項,需要提供乙個委託,在例項化這個委託時所用到的引數是執行緒將來啟動時要執行的方法。在.net中提供了兩種啟動執行緒的方式,一種是不帶引數的啟動方式,另一種是帶引數的啟動的方式。不帶引數的啟動方式 如果啟動引數時無需其它額外的資訊,可以使用threadstart來例項化thr...

多執行緒程式設計1

一,建立執行緒和退出執行緒 在linux系統中,所有與執行緒相關的函式都是以pthread開頭的。pthread create函式用於在當前程序中加入新的執行緒。linux系統中線程的建立與unix系統存在著不同。在linux系統中,當呼叫pthread create函式來建立執行緒時,系統首先先建...

多執行緒程式設計(1)

一 建立執行緒 函式 handle createthread lpsecurity attributeslpthreadattributes sddworddwstacksize initial stack sizelpthread start routinelpstartaddress threa...