summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2024-01-08 08:38:25 +0100
committerGravatar default2024-01-08 08:38:25 +0100
commitb401cd23ff43a4afdcb3fad85f8c642680a82e95 (patch)
tree1e5351817050c92188c88e4e6c075350d994fb38
parentNon-important variable renaming. (diff)
downloadpenes-snac2-b401cd23ff43a4afdcb3fad85f8c642680a82e95.tar.gz
penes-snac2-b401cd23ff43a4afdcb3fad85f8c642680a82e95.tar.xz
penes-snac2-b401cd23ff43a4afdcb3fad85f8c642680a82e95.zip
Added some state flags for threads.
-rw-r--r--httpd.c16
-rw-r--r--snac.h1
2 files changed, 15 insertions, 2 deletions
diff --git a/httpd.c b/httpd.c
index 30cdca1..08a1b44 100644
--- a/httpd.c
+++ b/httpd.c
@@ -506,9 +506,9 @@ static void *job_thread(void *arg)
506 for (;;) { 506 for (;;) {
507 xs *job = NULL; 507 xs *job = NULL;
508 508
509 job_wait(&job); 509 p_state->th_state[pid] = THST_WAIT;
510 510
511 srv_debug(2, xs_fmt("job thread %d wake up", pid)); 511 job_wait(&job);
512 512
513 if (job == NULL) /* corrupted message? */ 513 if (job == NULL) /* corrupted message? */
514 continue; 514 continue;
@@ -520,6 +520,8 @@ static void *job_thread(void *arg)
520 /* it's a socket */ 520 /* it's a socket */
521 FILE *f = NULL; 521 FILE *f = NULL;
522 522
523 p_state->th_state[pid] = THST_IN;
524
523 xs_data_get(&f, job); 525 xs_data_get(&f, job);
524 526
525 if (f != NULL) 527 if (f != NULL)
@@ -527,10 +529,14 @@ static void *job_thread(void *arg)
527 } 529 }
528 else { 530 else {
529 /* it's a q_item */ 531 /* it's a q_item */
532 p_state->th_state[pid] = THST_OUT;
533
530 process_queue_item(job); 534 process_queue_item(job);
531 } 535 }
532 } 536 }
533 537
538 p_state->th_state[pid] = THST_STOP;
539
534 srv_debug(1, xs_fmt("job thread %d stopped", pid)); 540 srv_debug(1, xs_fmt("job thread %d stopped", pid));
535 541
536 return NULL; 542 return NULL;
@@ -556,6 +562,8 @@ static void *background_thread(void *arg)
556 time_t t; 562 time_t t;
557 int cnt = 0; 563 int cnt = 0;
558 564
565 p_state->th_state[0] = THST_IN;
566
559 { 567 {
560 xs *list = user_list(); 568 xs *list = user_list();
561 char *p, *uid; 569 char *p, *uid;
@@ -588,6 +596,8 @@ static void *background_thread(void *arg)
588 if (cnt == 0) { 596 if (cnt == 0) {
589 /* sleep 3 seconds */ 597 /* sleep 3 seconds */
590 598
599 p_state->th_state[0] = THST_WAIT;
600
591#ifdef USE_POLL_FOR_SLEEP 601#ifdef USE_POLL_FOR_SLEEP
592 poll(NULL, 0, 3 * 1000); 602 poll(NULL, 0, 3 * 1000);
593#else 603#else
@@ -603,6 +613,8 @@ static void *background_thread(void *arg)
603 } 613 }
604 } 614 }
605 615
616 p_state->th_state[0] = THST_STOP;
617
606 srv_log(xs_fmt("background thread stopped")); 618 srv_log(xs_fmt("background thread stopped"));
607 619
608 return NULL; 620 return NULL;
diff --git a/snac.h b/snac.h
index 05bb8ab..c8ba887 100644
--- a/snac.h
+++ b/snac.h
@@ -51,6 +51,7 @@ typedef struct {
51 time_t srv_start_time; /* start time */ 51 time_t srv_start_time; /* start time */
52 int job_fifo_size; /* job fifo size */ 52 int job_fifo_size; /* job fifo size */
53 int n_threads; /* number of configured threads */ 53 int n_threads; /* number of configured threads */
54 enum { THST_WAIT, THST_IN, THST_OUT, THST_STOP } th_state[MAX_THREADS];
54} srv_state; 55} srv_state;
55 56
56void snac_log(snac *user, xs_str *str); 57void snac_log(snac *user, xs_str *str);