Messages in this thread | | | Date | Wed, 21 Jul 2010 17:31:00 +0200 | From | Tejun Heo <> | Subject | Re: [PATCHSET] workqueue: implement and use WQ_UNBOUND |
| |
Hello,
On 07/21/2010 05:25 PM, David Howells wrote: >> Each gcwq keeps track of currently running works in a hash table and looks >> whether the work in question is already executing before starting executing >> it. It's a bit complex but as a work_struct may be freed once execution >> starts, the status needs to be tracked outside. > > Thanks, that's what I wanted to know. > > I presume this survives an executing work_struct being freed, reallocated and > requeued before the address of the work_struct is removed from the hash table?
It will unnecessarily stall the execution of the new work if the last work is still running but nothing will be broken correctness-wise.
> I can see at least one way of doing this: marking the work_struct address in > the hash when the address becomes pending again so that the process of hash > removal will cause the work_struct to be requeued automatically.
If I'm correctly understanding what you're saying, the code already does about the same thing.
Thanks.
-- tejun
| |