public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Workqueue behaviour - Synchronization within submitted work.
@ 2013-03-20 18:45 Vijay
  2013-03-24 16:02 ` Stefan Richter
  0 siblings, 1 reply; 3+ messages in thread
From: Vijay @ 2013-03-20 18:45 UTC (permalink / raw)
  To: linux-kernel

In the new workqueue architecture, I have a question regarding
synchronization between different "work" submitted to the same
workqueue. For example:

* I submit two "works" A and B to a common driver specific workqueue (W).
* Each A and B, meddle with a certain shared data SD.
* Am I guaranteed serialized execution of A and B, or should I play
safe and use a semaphore (acquire/release) with A and B ?

Thanks,
Vijay

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Workqueue behaviour - Synchronization within submitted work
@ 2013-03-21  0:56 Vijay
  0 siblings, 0 replies; 3+ messages in thread
From: Vijay @ 2013-03-21  0:56 UTC (permalink / raw)
  To: linux-kernel

In the new workqueue architecture, I have a question regarding
synchronization between different "work" submitted to the same
workqueue. For example:

* I submit two sets of "work" A and B, to a common driver specific
workqueue (W).
* Each A and B, meddle with a certain shared data SD.
* Am I guaranteed serialized execution of A and B, or should I play
safe and use a semaphore (acquire/release) with A and B ?

Thanks,
Vijay

PS: Please CC me in the reply.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Workqueue behaviour - Synchronization within submitted work.
  2013-03-20 18:45 Workqueue behaviour - Synchronization within submitted work Vijay
@ 2013-03-24 16:02 ` Stefan Richter
  0 siblings, 0 replies; 3+ messages in thread
From: Stefan Richter @ 2013-03-24 16:02 UTC (permalink / raw)
  To: Vijay; +Cc: linux-kernel

On Mar 20 Vijay wrote:
> In the new workqueue architecture, I have a question regarding
> synchronization between different "work" submitted to the same
> workqueue. For example:
> 
> * I submit two "works" A and B to a common driver specific workqueue (W).
> * Each A and B, meddle with a certain shared data SD.
> * Am I guaranteed serialized execution of A and B, or should I play
> safe and use a semaphore (acquire/release) with A and B ?

The works A and B may be (and more or less likely will be) executed in
parallel --- except if you create the workqueue with parameters @flags |=
WQ_UNBOUND and @max_active = 1.  alloc_ordered_workqueue() is a shorthand
for creation of such a workqueue.

Some more thoughts:
  - If you go for an ordered workqueue and no other means of serialization
    of accesses to your data, check carefully that these data are indeed
    never accessed in other contexts besides the workers.
  - For serialization in non-atomic context, a struct mutex is usually
    preferred over a struct semaphore.  The foremost advantage of mutexes
    over counting semaphores is that code using the former can be debugged
    much easier.
-- 
Stefan Richter
-=====-===-= --== ==---
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-03-24 16:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-20 18:45 Workqueue behaviour - Synchronization within submitted work Vijay
2013-03-24 16:02 ` Stefan Richter
  -- strict thread matches above, loose matches on Subject: below --
2013-03-21  0:56 Vijay

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox