From 03752b3f44fbb61d4b392959ba6c28cbde6e667f Mon Sep 17 00:00:00 2001 From: paulc Date: Fri, 13 Nov 2015 07:47:38 +0000 Subject: [PATCH] Slow down the consumer waiting loop as to not burn too much CPU. git-svn-id: http://yate.null.ro/svn/yate/trunk@6064 acf43c95-373e-0410-b603-e72c3f656dc1 --- modules/wavefile.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/wavefile.cpp b/modules/wavefile.cpp index 67f5e4a0..075c97f1 100644 --- a/modules/wavefile.cpp +++ b/modules/wavefile.cpp @@ -362,11 +362,19 @@ void WaveSource::run() // internally reference if used for override or replace purpose bool noChan = (0 == m_chan); // wait until at least one consumer is attached + unsigned int fast = 4; while (!r) { lock(); r = m_consumers.count(); unlock(); - Thread::yield(); + if (r) + ; + else if (fast) { + --fast; + Thread::yield(); + } + else + Thread::idle(); if (!looping(noChan)) { notify(0,"replaced"); return;