}
#ifdef HAVE_THREADS
+pthread_t *current_threads = NULL;
+
void * thread_main(void *arg) {
time_t socket_wait;
while(running) {
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[]) {
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) {
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