- Как организовать пул потоков?, Lazarenko, 16:47 , 03-Июл-05 (1)
- Как организовать пул потоков?, Andrey, 16:53 , 03-Июл-05 (2)
- Как организовать пул потоков?, Maxim Kuznetsov, 14:15 , 04-Июл-05 (3)
если не надо в myfunc() передавать агрументы, то элементарно просто :/* pool protection and signals */ pthread_mutex_t pool_mutex=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t pool_cond=PTHREAD_COND_INITIALIZER; void *myfunc_thread(void *) { while(1) { pthread_mutex_lock(&pool_mutex); pthread_cond_wait(&pool_cond,&pool_mutex); // code placed here // pthread_mutex_unlock(&pool_mutex); } } /* create pool */ for(int i=0;i<POOL_SIZE;i++) { pthread_t tid; if (pthread_create(&tid,NULL,myfunc_thread,NULL)<0) exit(1); } ////// /* sample - call function from pool */ pthread_signal(&pool_cond); p.s.: если надо передавать аругменты - то чуть сложнее и будет не быстрее чем просто pthread_create.
- Как организовать пул потоков?, Maxim Kuznetsov, 14:18 , 04-Июл-05 (4)
реентерабельный код можно (и нужно) помещать после pthread_mutex_unlock функции myfunc_thread.
|