e-threadpool 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +26 -21
- data/lib/threadpool.rb +2 -1
- data/test/threadpool_test.rb +4 -6
- metadata +1 -1
data/README.md
CHANGED
@@ -7,30 +7,35 @@ Threadpool is the "threadpool pattern" implemented in ruby. It's a compact but r
|
|
7
7
|
- MRI and JRuby are supported.
|
8
8
|
|
9
9
|
## Install
|
10
|
-
|
11
|
-
|
10
|
+
Edit `Gemfile`
|
11
|
+
|
12
12
|
...
|
13
13
|
gem 'e-threadpool'
|
14
14
|
...
|
15
15
|
|
16
|
+
or
|
16
17
|
|
17
|
-
|
18
|
-
require 'threadpool'
|
19
|
-
|
20
|
-
class TestJob < Job
|
21
|
-
def run
|
22
|
-
puts "hello"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
threadpool = Threadpool::Threadpool.new
|
27
|
-
100.times.each do
|
28
|
-
# threadpool auto-executes the job after loaded
|
29
|
-
threadpool.load(TestJob.new)
|
30
|
-
end
|
31
|
-
|
32
|
-
# shutdown will wait until all jobs are finished
|
33
|
-
threadpool.shutdown
|
18
|
+
gem install e-threadpool
|
34
19
|
|
35
|
-
##
|
36
|
-
|
20
|
+
## Example
|
21
|
+
```ruby
|
22
|
+
require 'threadpool'
|
23
|
+
|
24
|
+
class TestJob < Job
|
25
|
+
def run
|
26
|
+
puts "hello"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
threadpool = Threadpool::Threadpool.new
|
31
|
+
100.times.each do
|
32
|
+
# threadpool auto-executes the job after loaded
|
33
|
+
threadpool.load(TestJob.new)
|
34
|
+
end
|
35
|
+
|
36
|
+
# shutdown will wait until all jobs are finished
|
37
|
+
threadpool.shutdown
|
38
|
+
```
|
39
|
+
|
40
|
+
## License
|
41
|
+
MIT LICENSE, please refer to the LICENSE file.
|
data/lib/threadpool.rb
CHANGED
data/test/threadpool_test.rb
CHANGED
@@ -1,21 +1,19 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../lib/threadpool'
|
2
2
|
require 'test/unit'
|
3
3
|
|
4
|
-
include Threadpool
|
5
|
-
|
6
4
|
class TestJob < Job
|
7
5
|
# NOTE: Mutext synchronize is a must, or the result might be unpredictable.
|
8
6
|
@@m = Mutex.new
|
9
|
-
|
7
|
+
|
10
8
|
def run
|
11
9
|
@@m.synchronize do
|
12
10
|
@args[0][0] += 1
|
13
|
-
end
|
11
|
+
end
|
14
12
|
end
|
15
13
|
end
|
16
14
|
|
17
15
|
class TestThreadpool < Test::Unit::TestCase
|
18
|
-
|
16
|
+
|
19
17
|
def test_sync
|
20
18
|
# arguments are init_workers, max_workers, timeout_secs. [OPTIONAL]
|
21
19
|
threadpool = Threadpool::Threadpool.new(8, 22, 5)
|
@@ -32,4 +30,4 @@ class TestThreadpool < Test::Unit::TestCase
|
|
32
30
|
threadpool.load(TestJob.new(sum))
|
33
31
|
assert_equal(5000, sum[0])
|
34
32
|
end
|
35
|
-
end
|
33
|
+
end
|