pthread的基本使用方法

2021-04-21 09:27:29 字數 1232 閱讀 1381

今天寫了個程式,但是很鬱悶的是沒有得到預想的結果:

pthread_t tid;

int main(void)

pthread_attr_t attr;

pthread_attr_init(&attr);

pthread_attr_setdetachstate(&attr, pthread_create_detached);

pthread_create(&attr, &tid, func, null);

pthread_attr_destroy(&attr);

printf("main route exit./n");

return 0;

void * func(void *args)

int i=0;

for(; 1;)

printf("thread: i is %d/n", i);

return ((void *)0);

執行結果為,一直列印thread:i,過了1s左右,列印main route exit.然後所有列印結束了。

但是用detach方法新建thread,不是應該和主線程分離的麼?想不同了。

ok, 還是貼一下pthread常用的幾個方法,以免遺忘了。

#include

int pthread_create(struct pthread_attr_t *, pthread_t *, void *f*(void *), void *);

建立乙個執行緒,f為執行緒函式。預設情況下執行緒屬性為joinable,即當主線程退出時,執行緒也會退出。

int pthread_join(pthread_t, void **);

主線程阻塞直到這個thread結束後才繼續往下走。這裡第二個引數接收執行緒退出的返回值。

int pthread_exit(void);

執行緒自己主動退出。

int pthread_cancel(pthread_t);

被動退出。乙個執行緒結束另外乙個執行緒的執行。這裡包括同步退出(預設),即執行緒立刻結束。

以及非同步退出,即執行緒直到下乙個cancellation point才退出。執行緒可以設定這樣的cancellation point,

當然也可以設定為不被其他執行緒命令退出。

int pthread_self(void);

得到自己的thread id。

編譯時需要加上-lpthread選項。

另外,發現c99不允許在for中直接宣告變數,厄。。。

SeekBar的基本使用方法

seekbar的基本使用方法 a 什麼是 seekbar b 使用 seekbar 的步驟 i.在布局檔案當中宣告seekbar android layout width fill parent android layout height wrap content ii.實現 onseekbarch...

標籤的基本使用方法

用於執行中從opencms vfs動態包含檔案,包含的檔案被當成乙個請求的附加引數。使用一下一些屬性來標識要包含的物件檔名稱 如果這些屬性都沒有設定,標籤的標籤體將使用別的方法得到檔名稱.注意 如果不能通過上訴方法得到包含的檔名稱,就會呼叫 當前cmsrequestcontext的 geturi 方...

grep的基本使用方法

選項 color 高亮顏色顯示 i 忽略大小寫 v 不匹配查詢 o 只顯示被模式匹配的字串 拓展 別名設定 alias grep grep color 萬用字元 任意長度任意字元 任意單個字元 指定範圍內 指定範圍外的 grep的正規表示式 元字元 表示任意單個字元 匹配次數 匹配其前面字元任意次數...