多執行緒pthread t

2021-07-04 03:44:40 字數 3472 閱讀 4833

使用xcode 6.3.2進行測試

pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *)
引數說明

pthread_t * 表示執行緒id,宣告方式pthread_t tid;

const pthread_attr_t * 表示執行緒的引數,參考

void*(*)(void *)表示執行緒開始時執行的函式,如void fun(void*),也可使用類的靜態函式

void* 為第三個引數所代表的函式的引數,即void* fun(void*)中第二個void*

返回值為0表示成功,其他為錯誤

例:

#include #include #include //sleep函式的標頭檔案

void* callfuntoprintfa(void * args);

void* callfuntoprintfb(void * args);

int main(int argc, const char * argv)

pthread_exit( null );//等待執行緒結束後在結束程序

}void* callfuntoprintfa(void * args)

return null;

}void* callfuntoprintfb(void * args)

return null;

}

輸出結果:

a b

a b ……例

#include 

#include

#include

void* callfuntoprintfbyargs(void * args);

int main(int argc, const

char * argv)

}pthread_exit( null );//等待執行緒結束後在結束程序

}void* callfuntoprintfbyargs(void * args)

return null;

}

輸出(省略換行符)

cba cba cba cba cab cba cba cba cba …….

輸出混亂,無法確定先後順序

pthread_exit(void *);

描述:呼叫該函式即結束呼叫該函式的程序;

引數 :pthread_t : 執行緒識別符號,即執行緒id,標識唯一執行緒。

例:

#include 

#include

#include

pthread_t a;

void* printfthread(void* args);

int main(int argc, const

char * argv)

pthread_exit( null );//等待執行緒結束後在結束程序

}void* printfthread(void* args)

}return

null;

}

輸出為1-50

pthread_exit(null)成功將執行緒結束。

pthread_join(pthread_t, void **);

描述:呼叫pthread_join即等待引數中的執行緒結束後在執行其他執行緒

引數 :pthread_t: 執行緒識別符號,即執行緒id,標識唯一執行緒。

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

未使用阻塞

#include 

#include

#include

pthread_t a;

pthread_t b;

void* threada(void* args);

void* threadb(void* args);

int main(int argc, const

char * argv)

pthread_exit( null );//等待執行緒結束後在結束程序

}void* threada(void* args)

return

null;

}void* threadb(void* args)

return

null;

}

輸出

6 1

7 2

3 4

5 8

9 10

使用阻塞

#include 

#include

#include

pthread_t a;

pthread_t b;

void* threada(void* args);

void* threadb(void* args);

int main(int argc, const

char * argv)

pthread_exit( null );//等待執行緒結束後在結束程序

}void* threada(void* args)

return

null;

}void* threadb(void* args)

return

null;

}

輸出

1 2

3 4

5 6

7 8

9 10

呼叫pthread_join即等待引數中的執行緒結束後在執行其他執行緒

pthread_yield_np();

描述:呼叫即放棄本輪到該執行緒的執行時間

例:

#include 

#include

#include

pthread_t a;

pthread_t b;

int i;

void* threada(void* args);

void* threadb(void* args);

int main(int argc, const

char * argv)

pthread_exit( null );//等待執行緒結束後在結束程序

}void* threada(void* args)

return

null;

}void* threadb(void* args)

printf("threadbisrunning\n");

return

null;

}

輸出

1 2

3 4

5 threadbisrunning

6 7

8 9

10參考:

《現代作業系統》andrew s.tanenbaum著

多執行緒 多執行緒原理

我們首先要知道什麼是多執行緒,說白了就是多個執行緒,執行緒是什麼呢,其實就是程序執行的途徑,那麼說道這裡我們又引入了乙個新的名字,就是程序,那麼我們來看看什麼是程序,其實我們自己也能看到,啟動電腦的任務管理器,我們就可以看到程序選項,裡面是我們電腦所有的程序,我們會發現有很多的程序.簡單地說就是程序...

多執行緒(一) tomcat 多執行緒

web server允許的最大執行緒連線數還受制於作業系統的核心引數設定,通常windows是2000個左右,linux是1000個左右。1.編輯tomcat安裝目錄下的conf目錄下的server.xml檔案 maxthreads 150 表示最多同時處理150個連線,tomcat使用執行緒來處理...

多執行緒 理解多執行緒(一)

程序 程序是cpu分配資源的基本單位 執行緒 執行緒是cpu排程的基本單位 資源分配給程序,所有執行緒共享該程序的資源 當執行緒數大於cpu的數量,會出現時間片的輪詢。cpu時間片是直接分配給執行緒的,執行緒拿到cpu時間片就能執行了 cpu時間片不是先分給程序然後再由程序分給程序下的執行緒的。所有...