作者lackofblack (...)
看板LinuxDev
標題[問題] 請問pthread的問題
時間Mon Apr 27 13:58:02 2009
void *func(void *)
{
...
}
while(...)
{
pthread_t thrd;
pthread_create(thrd, NULL, func, NULL);
...
...
pthread_cancel(thrd);
}
------------------------------------------------
以上每跑一陣子之後, pthread_create就會發生錯誤
請問是不是能create的thread數目有上限呢?
就算把thread cancel掉也沒辦法嗎...
拜託高手幫忙解惑了...小弟新手
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.78.32
1F:推 lungswu:請問錯誤的訊息是啥? 04/27 14:03
2F:→ lackofblack:我是用pthread_create的回傳值去判斷的... 04/27 14:04
3F:→ lackofblack:create成功的話是0 失敗就非0.大概都300條左右會失敗 04/27 14:05
4F:推 CriLit:thread 數目有上限沒錯 04/27 14:14
5F:→ CriLit:這種設計方式最好採用一開始就開一個 thread, 但是裡面的 04/27 14:15
6F:→ CriLit:執行的 function 是可以改變的 04/27 14:15
7F:→ CriLit:來取代一直 create thread 的 overhead 04/27 14:15
8F:→ lackofblack:喔喔!感謝C大 那請問要怎麼改變其執行的function呢... 04/27 14:18
9F:推 CriLit:一般就用 mutex or semaphore 來鎖住一個 function ptr 04/27 14:35
10F:→ CriLit:要他做的時候, 先填好 function ptr, 再解鎖就可以了 04/27 14:35
11F:→ CriLit:很多實作方式, 看你怎麼作 04/27 14:36
12F:→ lackofblack:恩...大概懂了 謝謝C大指教!! 04/27 14:37
13F:推 richliu:User thread 一般是 16K, root 沒有上限. 不過 16K 很大了 04/27 16:02
14F:推 iamron:調整stack size(讓同時可用多), 設定thread屬性為分離 05/08 02:23