Threads Pool - C Language
|
00001 00012 #include <stdio.h> 00013 #include <unistd.h> 00014 #include "thpool.h" 00015 #include "errore.h" 00016 00017 /*static int r=0; 00020 void *test(void * arg){ 00021 printf("Hello World !\n"); 00022 return 0; 00023 } 00024 00026 int main(int argc,char* argv[]){ 00027 int i=0; 00028 th_pool * pool = NULL; 00029 sigset_t set; 00031 /* Questa maschera ignora tutti i segnali */ 00032 if (sigfillset(&set) == -1){ 00033 sys_err(__FILE__,__LINE__,"Main: error sigfillset",errno); 00034 exit(EXIT_FAILURE); 00035 } 00036 00037 /* Inizializzo un pool di thread di dimensione 5 e 00038 * con un numero massimo di job in attesa nella coda di 10 */ 00039 if (!(pool = poolInit(5, 10, &set))){ 00040 exit(EXIT_FAILURE); 00041 } 00042 00043 /* Creo dei job fittizzi da fare eseguire al pool */ 00044 for (i=0; i<20; i++){ 00045 while (poolDispatcher(pool, test, NULL)==-5){ 00046 sleep (1); 00047 } 00048 } 00049 00050 /* Arresto il pool di threads e libero le risorse */ 00051 poolDestroy(pool); 00052 00053 return 0; 00054 }