four worker threads

rfuchs/threading
Richard Fuchs 12 years ago
parent bb8a7b4db5
commit f33fb8f936

@ -32,7 +32,7 @@ static
pthread_t signal_thread,
map_reload_thread,
callid_fetch_thread,
callid_work_thread;
callid_work_threads[4];
static GQueue callid_process_queue = G_QUEUE_INIT;
static pthread_cond_t callid_process_cond = PTHREAD_COND_INITIALIZER;
@ -389,6 +389,8 @@ static void *callid_worker(void *p) {
/**********************************************************************/
int main(int argc, char **argv)
{
int i;
#if !GLIB_CHECK_VERSION(2,32,0)
g_thread_init(NULL);
#endif
@ -447,8 +449,9 @@ int main(int argc, char **argv)
abort();
if (pthread_create(&callid_fetch_thread, NULL, callid_fetcher, NULL))
abort();
if (pthread_create(&callid_work_thread, NULL, callid_worker, NULL))
abort();
for (i = 0; i < G_N_ELEMENTS(callid_work_threads); i++)
if (pthread_create(&callid_work_threads[i], NULL, callid_worker, NULL))
abort();
/* the signal thread terminates when we should shut down */
pthread_join(signal_thread, NULL);
@ -458,8 +461,10 @@ int main(int argc, char **argv)
pthread_join(map_reload_thread, NULL);
pthread_cancel(callid_fetch_thread);
pthread_join(callid_fetch_thread, NULL);
pthread_cancel(callid_work_thread);
pthread_join(callid_work_thread, NULL);
for (i = 0; i < G_N_ELEMENTS(callid_work_threads); i++) {
pthread_cancel(callid_work_threads[i]);
pthread_join(callid_work_threads[i], NULL);
}
__mediator_destroy_maps(&med_tables);

Loading…
Cancel
Save