From e5ec72bf393a54d1826e86e8f4f106747d65e3aa Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Wed, 29 Sep 2021 00:50:57 -0400 Subject: [PATCH] Add some caveats in WorkStealingDeque docs --- src/docs/WorkStealingDeque.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/docs/WorkStealingDeque.md b/src/docs/WorkStealingDeque.md index ce275c0..ae198fb 100644 --- a/src/docs/WorkStealingDeque.md +++ b/src/docs/WorkStealingDeque.md @@ -9,9 +9,6 @@ This is not a full deque in the sense that: * [`maybepopfirst!`](@ref) (aka steal) for retrieving and removing an element at the head can be invoked from any tasks. However, there is no `pushfirst!`. -Implementation detail: It implements the dynamic circular work-stealing deque by -Chase and Lev (2005). - # Examples ```julia @@ -36,3 +33,15 @@ julia> fetch(Threads.@spawn popfirst!(deque)) julia> maybepopfirst!(deque) # returns nothing ``` + +# Extended help + +The current implementation is known to be not fully compliant with the C/C++ +memory model (on which Julia's memory model is designed). + +It implements the dynamic circular work-stealing deque by Chase and Lev (2005): + +> Chase, David, and Yossi Lev. “Dynamic Circular Work-Stealing Deque.” In +> Proceedings of the Seventeenth Annual ACM Symposium on Parallelism in +> Algorithms and Architectures, 21–28. SPAA ’05. New York, NY, USA: Association +> for Computing Machinery, 2005. .