Maxim Dounin
eeb72127cf
Thread pools: memory barriers in task completion notifications.
...
The ngx_thread_pool_done object isn't volatile, and at least some
compilers assume that it is permitted to reorder modifications of
volatile and non-volatile objects. Added appropriate ngx_memory_barrier()
calls to make sure all modifications will happen before the lock is released.
Reported by Mindaugas Rasiukevicius,
http://mailman.nginx.org/pipermail/nginx-devel/2016-April/008160.html .
2016-04-19 17:18:28 +03:00
Valentin Bartenev
e87a565aab
Thread pools: implemented graceful exiting of threads.
2015-03-23 17:51:21 +03:00
Valentin Bartenev
510c9cdca8
Thread pools: removed unused pointer to memory pool.
...
No functional changes.
2015-03-23 17:51:21 +03:00
Valentin Bartenev
cb43696e0c
Thread pools: keep waiting tasks mutex in ngx_thread_pool_t.
...
It's not needed for completed tasks queue since the previous change.
No functional changes.
2015-03-23 17:51:21 +03:00
Valentin Bartenev
f109a68b4f
Thread pools: replaced completed tasks queue mutex with spinlock.
2015-03-23 17:51:21 +03:00
Ruslan Ermilov
c34368715f
Thread pools: silence warning on process exit.
...
Work around pthread_cond_destroy() and pthread_mutex_destroy() returning
EBUSY. A proper solution would be to ensure all threads are terminated.
2015-03-19 23:20:18 +03:00
Ruslan Ermilov
afe1fcffaa
Thread pools: fixed the waiting tasks accounting.
...
Behave like POSIX semaphores. If N worker threads are waiting for tasks,
at least that number of tasks should be allowed to be put into the queue.
2015-03-19 13:00:48 +03:00
Ruslan Ermilov
20d07074e3
Thread pools: keep waiting tasks counter in ngx_thread_pool_t.
...
It's not needed for completed tasks queue.
No functional changes.
2015-03-19 23:19:35 +03:00
Valentin Bartenev
305fc021db
Thread pools implementation.
2015-03-14 17:37:07 +03:00