[concurrency-interest] Enforcing ordered execution of critical sections?

Hanson Char hanson.char at gmail.com
Wed Dec 24 11:20:57 EST 2014


Yes, thanks for clarifying the use case.

Regards,
Hanson

On Wed, Dec 24, 2014 at 8:02 AM, Joe Bowbeer <joe.bowbeer at gmail.com> wrote:

> Apparently the critical sections need to execute exactly in their pre
> assigned orders: 1, 2, 3, etc.
>
> An executor with an ordered queue would exec the first arrival first.
>
>
> On Wednesday, December 24, 2014, Doug Lea <dl at cs.oswego.edu> wrote:
>
>> On 12/13/2014 11:26 PM, Hanson Char wrote:
>>
>>> I am looking for a construct that can be used to efficiently enforce
>>> ordered execution of multiple critical sections, each calling from a
>>> different thread. The calling threads may run in parallel and may call
>>> the execution method out of order.
>>>
>>
>> Looking at this again while contemplating the need for
>> priority-based semaphores...
>>
>> Have you considered creating a separate single-threaded
>> executor using a PriorityBlockingQueue? You'd need to
>> define a comparator for ordering, and then construct
>> via something like
>>
>> Executor ex = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS,
>>  new PriorityBlockingQueue<Runnable>(initialCap, taskComparator)));
>>
>> You'd then use this executor only for the execCriticalSection
>> tasks.
>>
>> -Doug
>>
>>
>>> /**
>>>   * Used to enforce ordered execution of critical sections calling from
>>> multiple
>>>   * threads, parking and unparking the threads as necessary.
>>>   */
>>> public class OrderedExecutor<T> {
>>>      /**
>>>       * Executes a critical section at most once with the given order,
>>> parking
>>>       * and unparking the current thread as necessary so that all
>>> critical
>>>       * sections executed by different threads using this executor take
>>> place in
>>>       * the order from 1 to n consecutively.
>>>       */
>>>      public T execCriticalSectionInOrder(final int order,
>>>              final Callable<T> criticalSection) throws
>>> InterruptedException;
>>> }
>>>
>>> Regards,
>>> Hanson
>>> _______________________________________________
>>> Concurrency-interest mailing list
>>> Concurrency-interest at cs.oswego.edu
>>> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>>>
>>>
>> _______________________________________________
>> Concurrency-interest mailing list
>> Concurrency-interest at cs.oswego.edu
>> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>>
>
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at cs.oswego.edu
> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20141224/5da61824/attachment.html>


More information about the Concurrency-interest mailing list