Add a serializer interface to the threadpool
authorDavid M. Lee <dlee@digium.com>
Tue, 12 Feb 2013 21:45:59 +0000 (21:45 +0000)
committerDavid M. Lee <dlee@digium.com>
Tue, 12 Feb 2013 21:45:59 +0000 (21:45 +0000)
commit222e8a3afb6aabb31052fe76fa4f57fe26f69688
treed7f7494c130d9372bdc43592e762ee83b4a78aec
parente9ff351f06c1cb7ad0ee59b3ff09b804a23eb3a0
Add a serializer interface to the threadpool

This patch adds the ability to create a serializer from a thread pool. A
serializer is a ast_taskprocessor with the same contract as a default
taskprocessor (tasks execute serially) except instead of executing out
of a dedicated thread, execution occurs in a thread from a
ast_threadpool. Think of it as a lightweight thread.

While it guarantees that each task will complete before executing the
next, there is no guarantee as to which thread from the pool individual
tasks will execute. This normally only matters if your code relys on
thread specific information, such as thread locals.

This patch also fixes a bug in how the 'was_empty' parameter is computed
for the push callback, and gets rid of the unused 'shutting_down' field.

Review: https://reviewboard.asterisk.org/r/2323/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@381326 65c4cc65-6c06-0410-ace0-fbb531ad65f3
include/asterisk/threadpool.h
main/taskprocessor.c
main/threadpool.c
tests/test_taskprocessor.c
tests/test_threadpool.c