| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/server/server_joining_threads.c')
| -rw-r--r-- | src/server/server_joining_threads.c | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/src/server/server_joining_threads.c b/src/server/server_joining_threads.c new file mode 100644 index 0000000..e1d92ca --- /dev/null +++ b/src/server/server_joining_threads.c @@ -0,0 +1,38 @@ +#include <sys/socket.h> + +#include <errno.h> +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <unistd.h> + +#include "../parameters/parameters.h" + +#include "server.h" + +void JH_server_handle_joining_threads +( +   struct JH_server server [const restrict static 1] +) +{ +   JH_index i; + +   pthread_mutex_lock(&(server->workers.mutex)); + +   for (i = 0; i < server->workers.threads_capacity; ++i) +   { +      if (server->workers.threads[i].state == JH_SERVER_JOINING_THREAD) +      { +         JH_DEBUG(stderr, 1, "Joining thread %u", i); + +         pthread_join(server->workers.threads[i].posix_id, (void **) NULL); + +         server->workers.threads[i].state = JH_SERVER_NO_THREAD; + +         server->workers.currently_running -= 1; +      } +   } + +   pthread_mutex_unlock(&(server->workers.mutex)); +} | 


