diff options
author | Mark Michelson <mmichelson@digium.com> | 2012-11-08 23:35:10 +0000 |
---|---|---|
committer | Mark Michelson <mmichelson@digium.com> | 2012-11-08 23:35:10 +0000 |
commit | 902a2d8919b2790aa2775d29662c02c2e9e6cf56 (patch) | |
tree | 501b75ff091df68b0e282bbd6209dbb11a99dee9 /main/taskprocessor.c | |
parent | 77725bf293f470b6697b94472eafb457be83ef14 (diff) |
Get rid of taskprocessor fields no longer necessary.
This includes changing the taskprocessor to use its builtin
ao2_lock instead of having a separate mutex. It can do this
now since there is no longer an ast_cond_t associated with
the taskprocessor.
git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@376119 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/taskprocessor.c')
-rw-r--r-- | main/taskprocessor.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/main/taskprocessor.c b/main/taskprocessor.c index b433ca908..bd94103d2 100644 --- a/main/taskprocessor.c +++ b/main/taskprocessor.c @@ -67,14 +67,6 @@ struct tps_taskprocessor_stats { struct ast_taskprocessor { /*! \brief Friendly name of the taskprocessor */ const char *name; - /*! \brief Thread poll condition */ - ast_cond_t poll_cond; - /*! \brief Taskprocessor thread */ - pthread_t poll_thread; - /*! \brief Taskprocessor lock */ - ast_mutex_t taskprocessor_lock; - /*! \brief Taskprocesor thread run flag */ - unsigned char poll_thread_run; /*! \brief Taskprocessor statistics */ struct tps_taskprocessor_stats *stats; /*! \brief Taskprocessor current queue size */ @@ -392,8 +384,6 @@ static void tps_taskprocessor_destroy(void *tps) return; } ast_debug(1, "destroying taskprocessor '%s'\n", t->name); - /* kill it */ - ast_mutex_destroy(&t->taskprocessor_lock); /* free it */ if (t->stats) { ast_free(t->stats); @@ -419,11 +409,11 @@ static struct tps_task *tps_taskprocessor_pop(struct ast_taskprocessor *tps) ast_log(LOG_ERROR, "missing taskprocessor\n"); return NULL; } - ast_mutex_lock(&tps->taskprocessor_lock); + ao2_lock(tps); if ((task = AST_LIST_REMOVE_HEAD(&tps->tps_queue, list))) { tps->tps_queue_size--; } - ast_mutex_unlock(&tps->taskprocessor_lock); + ao2_unlock(tps); return task; } @@ -573,10 +563,10 @@ int ast_taskprocessor_push(struct ast_taskprocessor *tps, int (*task_exe)(void * ast_log(LOG_ERROR, "failed to allocate task! Can't push to '%s'\n", tps->name); return -1; } - ast_mutex_lock(&tps->taskprocessor_lock); + ao2_lock(tps); AST_LIST_INSERT_TAIL(&tps->tps_queue, t, list); previous_size = tps->tps_queue_size++; - ast_mutex_unlock(&tps->taskprocessor_lock); + ao2_unlock(tps); tps->listener->callbacks->task_pushed(tps->listener, previous_size ? 0 : 1); return 0; } @@ -594,7 +584,7 @@ int ast_taskprocessor_execute(struct ast_taskprocessor *tps) tps_task_free(t); - ast_mutex_lock(&tps->taskprocessor_lock); + ao2_lock(tps); size = tps_taskprocessor_depth(tps); if (tps->stats) { tps->stats->_tasks_processed_count++; @@ -602,7 +592,7 @@ int ast_taskprocessor_execute(struct ast_taskprocessor *tps) tps->stats->max_qsize = size; } } - ast_mutex_unlock(&tps->taskprocessor_lock); + ao2_unlock(tps); if (size == 0) { tps->listener->callbacks->emptied(tps->listener); |