You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by aa...@apache.org on 2001/10/17 02:59:18 UTC
cvs commit: httpd-2.0/server/mpm/worker worker.c
aaron 01/10/16 17:59:18
Modified: server/mpm/worker worker.c
Log:
First pass at converting worker MPM to APR's new lock API. This converts
the APR_INTRAPROCESS locks into lightweight, non-nested apr_thread_mutex_t
locks.
Revision Changes Path
1.28 +14 -13 httpd-2.0/server/mpm/worker/worker.c
Index: worker.c
===================================================================
RCS file: /home/cvs/httpd-2.0/server/mpm/worker/worker.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- worker.c 2001/09/24 06:42:12 1.27
+++ worker.c 2001/10/17 00:59:18 1.28
@@ -69,6 +69,7 @@
#include "apr_file_io.h"
#include "apr_thread_proc.h"
#include "apr_signal.h"
+#include "apr_thread_mutex.h"
#define APR_WANT_STRFUNC
#include "apr_want.h"
@@ -152,8 +153,8 @@
static apr_file_t *pipe_of_death_in = NULL;
static apr_file_t *pipe_of_death_out = NULL;
-static apr_lock_t *pipe_of_death_mutex; /* insures that a child process only
- consumes one character */
+/* insures that a child process only consumes one character */
+static apr_thread_mutex_t *pipe_of_death_mutex;
/* *Non*-shared http_main globals... */
@@ -186,7 +187,7 @@
static pid_t parent_pid;
/* Keep track of the number of worker threads currently active */
static int worker_thread_count;
-static apr_lock_t *worker_thread_count_mutex;
+static apr_thread_mutex_t *worker_thread_count_mutex;
/* Locks for accept serialization */
static apr_lock_t *accept_mutex;
@@ -531,7 +532,7 @@
/* Sets workers_may_exit if we received a character on the pipe_of_death */
static void check_pipe_of_death(void)
{
- apr_lock_acquire(pipe_of_death_mutex);
+ apr_thread_mutex_lock(pipe_of_death_mutex);
if (!workers_may_exit) {
apr_status_t ret;
char pipe_read_char;
@@ -548,7 +549,7 @@
signal_workers();
}
}
- apr_lock_release(pipe_of_death_mutex);
+ apr_thread_mutex_unlock(pipe_of_death_mutex);
}
static void *listener_thread(apr_thread_t *thd, void * dummy)
@@ -567,9 +568,9 @@
free(ti);
- apr_lock_acquire(worker_thread_count_mutex);
+ apr_thread_mutex_lock(worker_thread_count_mutex);
worker_thread_count++;
- apr_lock_release(worker_thread_count_mutex);
+ apr_thread_mutex_unlock(worker_thread_count_mutex);
apr_poll_setup(&pollset, num_listensocks+1, tpool);
for(n=0 ; n <= num_listensocks ; ++n)
@@ -724,9 +725,9 @@
ap_update_child_status(process_slot, thread_slot,
(dying) ? SERVER_DEAD : SERVER_GRACEFUL, (request_rec *) NULL);
- apr_lock_acquire(worker_thread_count_mutex);
+ apr_thread_mutex_lock(worker_thread_count_mutex);
worker_thread_count--;
- apr_lock_release(worker_thread_count_mutex);
+ apr_thread_mutex_unlock(worker_thread_count_mutex);
apr_thread_exit(thd, APR_SUCCESS);
return NULL;
@@ -886,10 +887,10 @@
clean_child_exit(APEXIT_CHILDFATAL);
}
worker_thread_count = 0;
- apr_lock_create(&worker_thread_count_mutex, APR_MUTEX, APR_INTRAPROCESS,
- NULL, pchild);
- apr_lock_create(&pipe_of_death_mutex, APR_MUTEX, APR_INTRAPROCESS,
- NULL, pchild);
+ apr_thread_mutex_create(&worker_thread_count_mutex,
+ APR_THREAD_MUTEX_DEFAULT, pchild);
+ apr_thread_mutex_create(&pipe_of_death_mutex,
+ APR_THREAD_MUTEX_DEFAULT, pchild);
ts = (thread_starter *)apr_palloc(pchild, sizeof(*ts));