Unix 執行緒池的例子

2021-07-10 12:24:18 字數 1679 閱讀 1284

/*

* pthread_pool.c

* * created on: 2016-3-8

* author: xfhu

*/#include

#include

#include

#include

#include

#include

#include "pthread_pool.h"

//share resource

cthread_pool pool ;//執行緒池物件,全域性共享

extern

"c"void* thread_routine (cthread_pool* pool);

cthread_pool::cthread_pool()

}cthread_pool::cthread_pool(int max_thread)

}//銷毀執行緒池

cthread_pool::~cthread_pool()

//釋放執行緒id占用記憶體

free (threadid);

//清理執行緒池中沒有完成的任務

thread_worker *head = null;

while (queue_head != null)

//釋放互斥量和條件變數

pthread_mutex_destroy(&(queue_lock));

pthread_cond_destroy(&(queue_ready));

//釋放執行緒池物件占用記憶體。

return ;

}//向執行緒池新增任務

int cthread_pool::pool_add_worker (void *(*process)(void *arg), void *arg)

member->next = newworker;

} else

cur_queue_size++;

pthread_mutex_unlock (&(queue_lock));

//使條件變數變成真,喚醒阻塞在條件變數上的執行緒

pthread_cond_signal (&(queue_ready));

return0;}

thread_worker * cthread_pool::thread_get_task()

if (shutdown)

//printf ("thread 0x%x is starting to work\n", pthread_self ());

cur_queue_size--;

worker = queue_head;

queue_head = worker->next;

pthread_mutex_unlock (&(queue_lock));

return worker;

}void* thread_routine (cthread_pool* pool) else

}pthread_exit (null);

}void *myprocess (void *arg)

int main (int argc, char **argv)

sleep (5);

delete pool;

free (workingnum);

return

0;}

執行緒池的乙個例子

執行緒池的乙個例子 threadpool.h threadpool.h inte ce for the cthreadpool class.if defined afx threadpool h e4160016 0fd0 4e25 a708 a3240945c9b9 included define...

python 執行緒池 Python的執行緒池

usr bin env python coding utf 8 concurrent 用於執行緒池和程序池程式設計而且更加容易,在python3.2中才有。import sys from concurrent.futures import threadpoolexecutor,as complete...

執行緒 執行緒池

執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後執行,主要實現 建立執行緒和管理執行緒,並且給執行緒分配任務。執行緒池中的執行緒是併發執行的。乙個比較簡單的執行緒池至少應包含執行緒池管理器 工作執行緒 任務列隊 任務介面等部分。其中執行緒池管理器的作用是建立 銷毀並管理...