看板 LinuxDev 關於我們 聯絡資訊
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
lungswu:請問錯誤的訊息是啥? 04/27 14:03
lackofblack:我是用pthread_create的回傳值去判斷的... 04/27 14:04
lackofblack:create成功的話是0 失敗就非0.大概都300條左右會失敗 04/27 14:05
CriLit:thread 數目有上限沒錯 04/27 14:14
CriLit:這種設計方式最好採用一開始就開一個 thread, 但是裡面的 04/27 14:15
CriLit:執行的 function 是可以改變的 04/27 14:15
CriLit:來取代一直 create thread 的 overhead 04/27 14:15
lackofblack:喔喔!感謝C大 那請問要怎麼改變其執行的function呢... 04/27 14:18
CriLit:一般就用 mutex or semaphore 來鎖住一個 function ptr 04/27 14:35
CriLit:要他做的時候, 先填好 function ptr, 再解鎖就可以了 04/27 14:35
CriLit:很多實作方式, 看你怎麼作 04/27 14:36
lackofblack:恩...大概懂了 謝謝C大指教!! 04/27 14:37
richliu:User thread 一般是 16K, root 沒有上限. 不過 16K 很大了 04/27 16:02
iamron:調整stack size(讓同時可用多), 設定thread屬性為分離 05/08 02:23