Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions src/docs/WorkStealingDeque.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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. <https://doi.org/10.1145/1073970.1073974>.