On 06/17/2010 08:05 PM, Anthony Liguori wrote:
On 06/17/2010 05:09 AM, Paolo Bonzini wrote:
+ while (QTAILQ_EMPTY(&(queue->request_list))&&
+ (ret != ETIMEDOUT)) {
+ ret = qemu_cond_timedwait(&(queue->cond),
+ &(queue->lock), 10*100000);
+ }
Using qemu_cond_timedwait is a hack for not properly broadcasting the
condvar in flush_threadlet_queue.
I think Anthony answered this one.
I think he said that the code has been changed so I am right? :)
You're right about the condition we check in the exit path but the
timedwait is needed to expire an idle thread.
In posix-aio-compat, yes. In threadlets you'll expire excess idle
threads after each threadlet has completed. If you want to keep the
threads above the min_threads-th ready for 10 seconds, that's fine; but
it's not what the v4 code does.
Paolo