說我在while
循環使用pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*fun) (void *), void *arg)
的並行線程,會發生什麼的線程(S)一旦完成功能fun()
,它也屬於中環與主線程,如果我有什麼請撥int pthread_detach(pthread_t thread)
還是隻有主線留在循環?發生,當它退出函數
例子:
pthread_t t[NTHREADS];
int i = -1;
while(1){
//do something
++i;
pthread_create(&t[i], NULL, fun, (void *)i);
pthread_detach(t[i]);
//main thread goes on, created one detaches when finished
}
我想要做的就是每個線程提供它自己的客戶多客戶端服務器,有NTHREADS
當某些線程完成fun()
或者更確切地說,爲它服務的客戶端,然後在槽內t[]
打開並且可以創建另一個線程(其他客戶端可以連接),如果它之前已滿。
您需要一個互斥鎖來保護't',以便線程在返回之前可以安全地將't [i]'設置爲「未使用」的值。 – user3386109