|
From: | Anthony Liguori |
Subject: | Re: [Qemu-devel] Re: [PATCH V4 2/3] qemu: Generic task offloading framework: threadlets |
Date: | Wed, 16 Jun 2010 09:27:12 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100423 Lightning/1.0b1 Thunderbird/3.0.4 |
On 06/16/2010 09:22 AM, Jamie Lokier wrote:
Paolo Bonzini wrote:These should be (at least for now) block-obj-$(CONFIG_POSIX).+ 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.Are you sure? It looks like it also expires idle threads after a fixed amount of idle time.
Yup, that's the intention of the code.We signal instead of broadcast because broadcasting causes all threads to wake up which hurts performance. AFAICT, there is no correctness issue in using signal vs. broadcast.
Regards, Anthony Liguori
-- Jamie
[Prev in Thread] | Current Thread | [Next in Thread] |