mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-15 14:28:24 +00:00
res_rtp_asterisk: Fix 100% CPU usage due to timer heap thread spinning.
Side note: I need a vacation. ........ Merged revisions 423210 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 423211 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@423212 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1031,7 +1031,7 @@ static struct ast_rtp_ioqueue_thread *rtp_ioqueue_thread_get_or_create(void)
|
|||||||
|
|
||||||
pj_timer_heap_set_lock(ioqueue->timerheap, lock, PJ_TRUE);
|
pj_timer_heap_set_lock(ioqueue->timerheap, lock, PJ_TRUE);
|
||||||
|
|
||||||
if (pj_ioqueue_create(ioqueue->pool, 16, &ioqueue->ioqueue) != PJ_SUCCESS) {
|
if (pj_ioqueue_create(ioqueue->pool, PJ_IOQUEUE_MAX_HANDLES, &ioqueue->ioqueue) != PJ_SUCCESS) {
|
||||||
goto fatal;
|
goto fatal;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1700,8 +1700,17 @@ static pj_ice_sess_cb ast_rtp_ice_sess_cb = {
|
|||||||
/*! \brief Worker thread for timerheap */
|
/*! \brief Worker thread for timerheap */
|
||||||
static int timer_worker_thread(void *data)
|
static int timer_worker_thread(void *data)
|
||||||
{
|
{
|
||||||
|
pj_ioqueue_t *ioqueue;
|
||||||
|
|
||||||
|
if (pj_ioqueue_create(pool, 1, &ioqueue) != PJ_SUCCESS) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
while (!timer_terminate) {
|
while (!timer_terminate) {
|
||||||
|
const pj_time_val delay = {0, 10};
|
||||||
|
|
||||||
pj_timer_heap_poll(timer_heap, NULL);
|
pj_timer_heap_poll(timer_heap, NULL);
|
||||||
|
pj_ioqueue_poll(ioqueue, &delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user