X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2Fmain.c;h=b86633e7e01536e4df08fa7fb657f429dca994fc;hp=17980b445762e5b2b9634d94bc2c4f2d93e98c98;hb=2b9e305af713f0960ac0cd7645af3e0ef85a8515;hpb=740649d6f206dc1f65e7550a842cf298fac7cb36 diff --git a/src/main.c b/src/main.c index 17980b4..b86633e 100644 --- a/src/main.c +++ b/src/main.c @@ -101,6 +101,8 @@ static int load_mysql_config() { } #ifdef HAVE_THREADS +pthread_t *current_threads = NULL; + void * thread_main(void *arg) { time_t socket_wait; while(running) { @@ -114,6 +116,22 @@ void * thread_main(void *arg) { running_threads--; return NULL; } + +int getCurrentThreadID() { + if(!current_threads) return 0; + int i; + unsigned int my_tid = (unsigned int) pthread_self_tid(); + for(i = 0; i < running_threads; i++) { + #ifdef WIN32 + if((unsigned int) current_threads[i].p == my_tid) + #else + if((unsigned int) current_threads[i] == my_tid) + #endif + return i+1; + } + return 0; +} + #endif int main(int argc, char *argv[]) { @@ -170,14 +188,13 @@ main: int worker_threads = get_int_field("General.worker_threads"); if(!worker_threads) worker_threads = 1; - running = 1; #ifdef HAVE_THREADS - pthread_t tid[worker_threads]; int tid_id = 0; + current_threads = calloc(worker_threads, sizeof(*current_threads)); for(tid_id = 0; tid_id < worker_threads; tid_id++) { running_threads++; - pthread_create(&tid[tid_id], NULL, thread_main, NULL); + pthread_create(¤t_threads[tid_id], NULL, thread_main, NULL); } int usleep_delay = 1000000 / TICKS_PER_SECOND; while(running) { @@ -188,7 +205,7 @@ main: usleep(usleep_delay); } for(tid_id = 0; tid_id < worker_threads; tid_id++) { - pthread_join(tid[tid_id], NULL); + pthread_join(current_threads[tid_id], NULL); } running_threads = 0; #else