@@ -86,14 +86,14 @@ We also have a [IRC (gitter)](https://gitter.im/ruby-concurrency/concurrent-ruby
86
86
87
87
#### General-purpose Concurrency Abstractions
88
88
89
- * [ Async] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Async.html ) :
89
+ * [ Async] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Async.html ) :
90
90
A mixin module that provides simple asynchronous behavior to a class. Loosely based on Erlang's
91
91
[ gen_server] ( http://www.erlang.org/doc/man/gen_server.html ) .
92
- * [ ScheduledTask] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ScheduledTask.html ) :
92
+ * [ ScheduledTask] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/ScheduledTask.html ) :
93
93
Like a Future scheduled for a specific future time.
94
- * [ TimerTask] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/TimerTask.html ) :
94
+ * [ TimerTask] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/TimerTask.html ) :
95
95
A Thread that periodically wakes up to perform work at regular intervals.
96
- * [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html ) :
96
+ * [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Promises.html ) :
97
97
Unified implementation of futures and promises which combines features of previous ` Future ` ,
98
98
` Promise ` , ` IVar ` , ` Event ` , ` dataflow ` , ` Delay ` , and (partially) ` TimerTask ` into a single
99
99
framework. It extensively uses the new synchronization layer to make all the features
@@ -104,103 +104,103 @@ We also have a [IRC (gitter)](https://gitter.im/ruby-concurrency/concurrent-ruby
104
104
105
105
Collection classes that were originally part of the (deprecated) ` thread_safe ` gem:
106
106
107
- * [ Array] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Array.html ) A thread-safe
107
+ * [ Array] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Array.html ) A thread-safe
108
108
subclass of Ruby's standard [ Array] ( http://ruby-doc.org/core-2.2.0/Array.html ) .
109
- * [ Hash] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Hash.html ) A thread-safe
109
+ * [ Hash] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Hash.html ) A thread-safe
110
110
subclass of Ruby's standard [ Hash] ( http://ruby-doc.org/core-2.2.0/Hash.html ) .
111
- * [ Set] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Set.html ) A thread-safe
111
+ * [ Set] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Set.html ) A thread-safe
112
112
subclass of Ruby's standard [ Set] ( http://ruby-doc.org/stdlib-2.4.0/libdoc/set/rdoc/Set.html ) .
113
- * [ Map] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Map.html ) A hash-like object
113
+ * [ Map] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Map.html ) A hash-like object
114
114
that should have much better performance characteristics, especially under high concurrency,
115
115
than ` Concurrent::Hash ` .
116
- * [ Tuple] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Tuple.html ) A fixed size
116
+ * [ Tuple] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Tuple.html ) A fixed size
117
117
array with volatile (synchronized, thread safe) getters/setters.
118
118
119
119
Value objects inspired by other languages:
120
120
121
- * [ Maybe] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Maybe.html ) A thread-safe,
121
+ * [ Maybe] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Maybe.html ) A thread-safe,
122
122
immutable object representing an optional value, based on
123
123
[ Haskell Data.Maybe] ( https://hackage.haskell.org/package/base-4.2.0.1/docs/Data-Maybe.html ) .
124
124
125
125
Structure classes derived from Ruby's [ Struct] ( http://ruby-doc.org/core-2.2.0/Struct.html ) :
126
126
127
- * [ ImmutableStruct] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ImmutableStruct.html )
127
+ * [ ImmutableStruct] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/ImmutableStruct.html )
128
128
Immutable struct where values are set at construction and cannot be changed later.
129
- * [ MutableStruct] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/MutableStruct.html )
129
+ * [ MutableStruct] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/MutableStruct.html )
130
130
Synchronized, mutable struct where values can be safely changed at any time.
131
- * [ SettableStruct] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/SettableStruct.html )
131
+ * [ SettableStruct] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/SettableStruct.html )
132
132
Synchronized, write-once struct where values can be set at most once, either at construction
133
133
or any time thereafter.
134
134
135
135
Thread-safe variables:
136
136
137
- * [ Agent] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Agent.html ) : A way to
137
+ * [ Agent] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Agent.html ) : A way to
138
138
manage shared, mutable, * asynchronous* , independent state. Based on Clojure's
139
139
[ Agent] ( http://clojure.org/agents ) .
140
- * [ Atom] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Atom.html ) : A way to manage
140
+ * [ Atom] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Atom.html ) : A way to manage
141
141
shared, mutable, * synchronous* , independent state. Based on Clojure's
142
142
[ Atom] ( http://clojure.org/atoms ) .
143
- * [ AtomicBoolean] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/AtomicBoolean.html )
143
+ * [ AtomicBoolean] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/AtomicBoolean.html )
144
144
A boolean value that can be updated atomically.
145
- * [ AtomicFixnum] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/AtomicFixnum.html )
145
+ * [ AtomicFixnum] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/AtomicFixnum.html )
146
146
A numeric value that can be updated atomically.
147
- * [ AtomicReference] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/MutexAtomic.html )
147
+ * [ AtomicReference] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/MutexAtomic.html )
148
148
An object reference that may be updated atomically.
149
- * [ Exchanger] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Exchanger.html )
149
+ * [ Exchanger] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Exchanger.html )
150
150
A synchronization point at which threads can pair and swap elements within pairs. Based on
151
151
Java's [ Exchanger] ( http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Exchanger.html ) .
152
- * [ MVar] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/MVar.html ) A synchronized
152
+ * [ MVar] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/MVar.html ) A synchronized
153
153
single element container. Based on Haskell's
154
154
[ MVar] ( https://hackage.haskell.org/package/base-4.8.1.0/docs/Control-Concurrent-MVar.html ) and
155
155
Scala's [ MVar] ( http://docs.typelevel.org/api/scalaz/nightly/index.html#scalaz.concurrent.MVar$ ) .
156
- * [ ThreadLocalVar] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ThreadLocalVar.html )
156
+ * [ ThreadLocalVar] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/ThreadLocalVar.html )
157
157
A variable where the value is different for each thread.
158
- * [ TVar] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/TVar.html ) A transactional
158
+ * [ TVar] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/TVar.html ) A transactional
159
159
variable implementing software transactional memory (STM). Based on Clojure's
160
160
[ Ref] ( http://clojure.org/refs ) .
161
161
162
162
#### Java-inspired ThreadPools and Other Executors
163
163
164
- * See the [ thread pool] ( http://ruby-concurrency.github.io/concurrent-ruby/file.thread_pools.html )
164
+ * See the [ thread pool] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ file.thread_pools.html )
165
165
overview, which also contains a list of other Executors available.
166
166
167
167
#### Thread Synchronization Classes and Algorithms
168
168
169
- * [ CountDownLatch] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/CountDownLatch.html )
169
+ * [ CountDownLatch] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/CountDownLatch.html )
170
170
A synchronization object that allows one thread to wait on multiple other threads.
171
- * [ CyclicBarrier] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/CyclicBarrier.html )
171
+ * [ CyclicBarrier] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/CyclicBarrier.html )
172
172
A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point.
173
- * [ Event] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Event.html ) Old school
173
+ * [ Event] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Event.html ) Old school
174
174
kernel-style event.
175
- * [ ReadWriteLock] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ReadWriteLock.html )
175
+ * [ ReadWriteLock] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/ReadWriteLock.html )
176
176
A lock that supports multiple readers but only one writer.
177
- * [ ReentrantReadWriteLock] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ReentrantReadWriteLock.html )
177
+ * [ ReentrantReadWriteLock] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/ReentrantReadWriteLock.html )
178
178
A read/write lock with reentrant and upgrade features.
179
- * [ Semaphore] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Semaphore.html )
179
+ * [ Semaphore] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Semaphore.html )
180
180
A counting-based locking mechanism that uses permits.
181
- * [ AtomicMarkableReference] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Atomic/AtomicMarkableReference.html )
181
+ * [ AtomicMarkableReference] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Atomic/AtomicMarkableReference.html )
182
182
183
183
#### Deprecated
184
184
185
185
Deprecated features are still available and bugs are being fixed, but new features will not be added.
186
186
187
- * ~~ [ Future] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Future.html ) :
187
+ * ~~ [ Future] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Future.html ) :
188
188
An asynchronous operation that produces a value.~~ Replaced by
189
- [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html ) .
190
- * ~~ [ Dataflow] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent.html#dataflow-class_method ) :
189
+ [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Promises.html ) .
190
+ * ~~ [ Dataflow] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent.html#dataflow-class_method ) :
191
191
Built on Futures, Dataflow allows you to create a task that will be scheduled when all of
192
192
its data dependencies are available.~~ Replaced by
193
- [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html ) .
194
- * ~~ [ Promise] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promise.html ) : Similar
193
+ [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Promises.html ) .
194
+ * ~~ [ Promise] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Promise.html ) : Similar
195
195
to Futures, with more features.~~ Replaced by
196
- [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html ) .
197
- * ~~ [ Delay] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Delay.html ) Lazy evaluation
196
+ [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Promises.html ) .
197
+ * ~~ [ Delay] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Delay.html ) Lazy evaluation
198
198
of a block yielding an immutable result. Based on Clojure's
199
199
[ delay] ( https://clojuredocs.org/clojure.core/delay ) .~~ Replaced by
200
- [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html ) .
201
- * ~~ [ IVar] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/IVar.html ) Similar to a
200
+ [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Promises.html ) .
201
+ * ~~ [ IVar] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/IVar.html ) Similar to a
202
202
"future" but can be manually assigned once, after which it becomes immutable.~~ Replaced by
203
- [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html ) .
203
+ [ Promises Framework] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Promises.html ) .
204
204
205
205
### Edge Features
206
206
@@ -211,18 +211,18 @@ keep backward compatibility (there may also lack tests and documentation). Seman
211
211
be obeyed though. Features developed in ` concurrent-ruby-edge ` are expected to move to
212
212
` concurrent-ruby ` when final.
213
213
214
- * [ Actor] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Actor.html ) : Implements
214
+ * [ Actor] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Actor.html ) : Implements
215
215
the Actor Model, where concurrent actors exchange messages.
216
216
* Status: Partial documentation and tests; depends on new future/promise framework; stability is good.*
217
- * [ Channel] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Edge /Channel.html ) :
217
+ * [ Channel] ( http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent /Channel.html ) :
218
218
Communicating Sequential Processes ([ CSP] ( https://en.wikipedia.org/wiki/Communicating_sequential_processes ) ).
219
219
Functionally equivalent to Go [ channels] ( https://tour.golang.org/concurrency/2 ) with additional
220
220
inspiration from Clojure [ core.async] ( https://clojure.github.io/core.async/ ) .
221
221
* Status: Partial documentation and tests.*
222
- * [ LazyRegister] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/LazyRegister.html )
223
- * [ LockFreeLinkedSet] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Edge/LockFreeLinkedSet.html )
222
+ * [ LazyRegister] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/LazyRegister.html )
223
+ * [ LockFreeLinkedSet] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/Edge/LockFreeLinkedSet.html )
224
224
* Status: will be moved to core soon.*
225
- * [ LockFreeStack] ( http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/LockFreeStack.html )
225
+ * [ LockFreeStack] ( http://ruby-concurrency.github.io/concurrent-ruby/master/ Concurrent/LockFreeStack.html )
226
226
* Status: missing documentation and tests.*
227
227
228
228
## Supported Ruby versions
0 commit comments