Messages in this thread | | | Date | Wed, 19 Sep 2012 10:31:28 -0700 | From | Tejun Heo <> | Subject | Re: [PATCH 2/2] workqueue: Keep activate-order equals to queue_work()-order |
| |
Hello, Lai.
On Wed, Sep 19, 2012 at 05:57:12PM +0800, Lai Jiangshan wrote: > (disorder of execution is OK for current WQ. because we can launch new worker > to execute the next work if the previous one is waiting something) > > But I concern activate-order, not execution order. A non-delayed work > may delay a delayed work for ever, and if a non-delayed work needs something > which will be produced by delayed one, the two work may wait each other. > > { > a subsystem queues a work to release resource. > and them > a subsystem queues a work to use the resource. > } > Is this behavior acceptable?
Even on workqueues with a rescuer, forward progress is not guaranteed if there are more than one co-dependent work items. workqueue doesn't guarantee anything regarding activation or execution order and any user which depends on that is broken.
In general, I think it's a bad idea to give that kind of guarantee and encourage such usages which can lead to extremely subtle breakages which cannot be detected in any automated way - we don't have any way to mark dependencies among work items.
Thanks.
-- tejun
| |