Re: [PATCH 17/21] workqueue: simple reimplementation of SINGLE_THREADworkqueue

From: Tejun Heo
Date: Tue Nov 17 2009 - 11:26:28 EST


Hello,

11/17/2009 11:03 PM, Johannes Berg wrote:
> On Tue, 2009-11-17 at 02:15 +0900, Tejun Heo wrote:
>> SINGLE_THREAD workqueues are used to reduce the number of worker
>> threads and ease synchronization.
>
> Wireless (mac80211) also requires that the order in which different work
> structs are queued up is identical to the processing order. At least
> some code was written with that assumption in mind, and I think it's
> actually required in a few places.

Thanks for pointing it out.

> Also, that unlikely() here:
>
>> + if (unlikely(single_thread)) {
>> + mutex_lock(&wq->single_thread_mutex);
>> + f(work);
>> + mutex_unlock(&wq->single_thread_mutex);
>> + } else
>> + f(work);
>
> seems wrong, there are many single-threaded workqueues after all.

Well, most single threaded users which chose single threaded queue to
reduce the number of threads won't need to, so I'm expecting the
number of single threaded users to drop. I'll probably drop the
unlikely on the next round.

Thanks.

--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/