2
2
[ ![ Gem Version] ( https://badge.fury.io/rb/concurrent-ruby.png )] ( http://badge.fury.io/rb/concurrent-ruby ) [ ![ Build Status] ( https://travis-ci.org/ruby-concurrency/concurrent-ruby.svg?branch=master )] ( https://travis-ci.org/ruby-concurrency/concurrent-ruby ) [ ![ Coverage Status] ( https://coveralls.io/repos/ruby-concurrency/concurrent-ruby/badge.png )] ( https://coveralls.io/r/ruby-concurrency/concurrent-ruby ) [ ![ Code Climate] ( https://codeclimate.com/github/ruby-concurrency/concurrent-ruby.png )] ( https://codeclimate.com/github/ruby-concurrency/concurrent-ruby ) [ ![ Inline docs] ( http://inch-ci.org/github/ruby-concurrency/concurrent-ruby.png )] ( http://inch-ci.org/github/ruby-concurrency/concurrent-ruby ) [ ![ Dependency Status] ( https://gemnasium.com/ruby-concurrency/concurrent-ruby.png )] ( https://gemnasium.com/ruby-concurrency/concurrent-ruby )
3
3
4
4
<table >
5
- <tr >
6
- <td align =" left " valign =" top " >
7
- <p >
8
- Modern concurrency tools for Ruby. Inspired by
9
- <a href =" http://www.erlang.org/doc/reference_manual/processes.html " >Erlang</a >,
10
- <a href =" http://clojure.org/concurrent_programming " >Clojure</a >,
11
- <a href =" http://www.scala-lang.org/api/current/index.html#scala.actors.Actor " >Scala</a >,
12
- <a href =" http://www.haskell.org/haskellwiki/Applications_and_libraries/Concurrency_and_parallelism#Concurrent_Haskell " >Haskell</a >,
13
- <a href =" http://blogs.msdn.com/b/dsyme/archive/2010/02/15/async-and-parallel-design-patterns-in-f-part-3-agents.aspx " >F#</a >,
14
- <a href =" http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx " >C#</a >,
15
- <a href =" http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html " >Java</a >,
16
- and classic concurrency patterns.
17
- </p >
18
- <p >
19
- The design goals of this gem are:
20
- <ul >
21
- <li >Be an 'unopinionated' toolbox that provides useful utilities without debating which is better or why</li >
22
- <li >Remain free of external gem dependencies</li >
23
- <li >Stay true to the spirit of the languages providing inspiration</li >
24
- <li >But implement in a way that makes sense for Ruby</li >
25
- <li >Keep the semantics as idiomatic Ruby as possible</li >
26
- <li >Support features that make sense in Ruby</li >
27
- <li >Exclude features that don't make sense in Ruby</li >
28
- <li >Be small, lean, and loosely coupled</li >
29
- </ul >
30
- </p >
31
- </td >
32
- <td align =" right " valign =" top " >
33
- <img src =" https://raw.githubusercontent.com/wiki/ruby-concurrency/concurrent-ruby/logo/concurrent-ruby-logo-300x300.png " />
34
- </td >
35
- </tr >
5
+ <tr >
6
+ <td align="left" valign="top">
7
+ <p>
8
+ Modern concurrency tools for Ruby. Inspired by
9
+ <a href="http://www.erlang.org/doc/reference_manual/processes.html">Erlang</a>,
10
+ <a href="http://clojure.org/concurrent_programming">Clojure</a>,
11
+ <a href="http://www.scala-lang.org/api/current/index.html#scala.actors.Actor">Scala</a>,
12
+ <a href="http://www.haskell.org/haskellwiki/Applications_and_libraries/Concurrency_and_parallelism#Concurrent_Haskell">Haskell</a>,
13
+ <a href="http://blogs.msdn.com/b/dsyme/archive/2010/02/15/async-and-parallel-design-patterns-in-f-part-3-agents.aspx">F#</a>,
14
+ <a href="http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx">C#</a>,
15
+ <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html">Java</a>,
16
+ and classic concurrency patterns.
17
+ </p>
18
+ <p>
19
+ The design goals of this gem are:
20
+ <ul>
21
+ <li>Be an 'unopinionated' toolbox that provides useful utilities without debating which is better or why</li>
22
+ <li>Remain free of external gem dependencies</li>
23
+ <li>Stay true to the spirit of the languages providing inspiration</li>
24
+ <li>But implement in a way that makes sense for Ruby</li>
25
+ <li>Keep the semantics as idiomatic Ruby as possible</li>
26
+ <li>Support features that make sense in Ruby</li>
27
+ <li>Exclude features that don't make sense in Ruby</li>
28
+ <li>Be small, lean, and loosely coupled</li>
29
+ </ul>
30
+ </p>
31
+ </td>
32
+ <td align="right" valign="top">
33
+ <img src="https://raw.githubusercontent.com/wiki/ruby-concurrency/concurrent-ruby/logo/concurrent-ruby-logo-300x300.png"/>
34
+ </td>
35
+ </tr >
36
36
</table >
37
37
38
- ### Install
38
+ ## Install
39
39
40
40
``` shell
41
41
gem install concurrent-ruby
42
42
```
43
+
43
44
or add the following line to Gemfile:
44
45
45
46
``` ruby
46
47
gem ' concurrent-ruby'
47
48
```
49
+
48
50
and run ` bundle install ` from your shell.
49
51
50
- * NOTE : There is an old gem from 2007 called "concurrent" that does not appear to be under active development. That isn't us. Please do not run* ` gem install concurrent ` * . It is not the droid you are looking for.*
52
+ _ NOTE : There is an old gem from 2007 called "concurrent" that does not appear to be under active development. That isn't us. Please do not run* ` gem install concurrent ` * . It is not the droid you are looking for._
51
53
52
54
## Features & Documentation
53
55
54
56
Please see the [ Concurrent Ruby Wiki] ( https://github.com/ruby-concurrency/concurrent-ruby/wiki )
55
- or the [ API documentation] ( http://rubydoc.info/github/ ruby-concurrency/concurrent-ruby/master/ frames )
57
+ or the [ API documentation] ( http://ruby-concurrency.github.io /concurrent-ruby/frames.html ) )
56
58
for more information or join our [ mailing list] ( http://groups.google.com/group/concurrent-ruby ) .
57
59
58
60
There are many concurrency abstractions in this library. These abstractions can be broadly categorized
@@ -74,6 +76,7 @@ into several general groups:
74
76
* Thread synchronization classes and algorithms including [ dataflow] ( https://github.com/ruby-concurrency/concurrent-ruby/wiki/Dataflow ) ,
75
77
timeout, condition, countdown latch, dependency counter, and event
76
78
* Java-inspired [ thread pools] ( https://github.com/ruby-concurrency/concurrent-ruby/wiki/Thread%20Pools )
79
+ * New fast light-weighted [ Actor model] ( http://ruby-concurrency.github.io/concurrent-ruby/frames.html#!Concurrent/Actress.html ) implementation.
77
80
* And many more...
78
81
79
82
### Semantic Versioning
@@ -91,7 +94,7 @@ It should be fully compatible with any interpreter that is compliant with Ruby 1
91
94
Many more code examples can be found in the documentation for each class (linked above).
92
95
This one simple example shows some of the power of this gem.
93
96
94
- ``` ruby
97
+ ``` ruby
95
98
require ' concurrent'
96
99
require ' thread' # for Queue
97
100
require ' open-uri' # for open(uri)
0 commit comments