threadlimiter 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ 0.2.1 (17-03-2012)
2
+
3
+ * Added limit=0, mimicking no-forking.
4
+
5
+ * Ruby 1.9?
6
+
1
7
  0.2.0 (11-02-2012)
2
8
 
3
9
  * Block by default.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -18,7 +18,8 @@ class ThreadLimiter
18
18
 
19
19
  # Initialize the ThreadLimiter.
20
20
  # The optional parameter <i>limit</i> is the maximum number of concurrently running threads.
21
- # Set <i>limit</i> to -1 or 0 to fork threads without limiting the number of concurrently running threads.
21
+ # Set <i>limit</i> to -1 to fork threads without limiting the number of concurrently running threads.
22
+ # Set <i>limit</i> to 0 to join the newly created thread immediately, mimicking no-forking.
22
23
  # Set options[:noblock] to true to start the new thread before waiting for resources.
23
24
 
24
25
  def initialize(limit, options={})
@@ -37,10 +38,14 @@ class ThreadLimiter
37
38
  # The list of arguments is passed to Thread.fork().
38
39
 
39
40
  def fork(*args, &block)
40
- if @limit <= 0
41
+ if @limit < 0
41
42
  Thread.fork do
42
43
  yield(*args)
43
44
  end
45
+ elsif @limit == 0
46
+ Thread.fork do
47
+ yield(*args)
48
+ end.join # Because ThreadLimiter#fork() should return a new Thread.
44
49
  else
45
50
  cv_wait unless @noblock
46
51
 
@@ -113,10 +118,10 @@ class ThreadLimiter
113
118
  def cv_signal
114
119
  @mutex.synchronize do
115
120
  @running -= 1
116
-
117
- @cv.signal
118
121
  end
119
122
 
123
+ @cv.signal
124
+
120
125
  self
121
126
  end
122
127
  end
@@ -1,3 +1,3 @@
1
1
  class ThreadLimiter
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,32 +1,23 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: threadlimiter
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- - 0
10
- version: 0.2.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Erik Veenstra
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-02-11 00:00:00 Z
12
+ date: 2012-03-17 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
- description: Fork threads like Thread.fork, but limit the number of concurrently running threads.
14
+ description: Fork threads like Thread.fork, but limit the number of concurrently running
15
+ threads.
22
16
  email: threadlimiter@erikveen.dds.nl
23
17
  executables: []
24
-
25
18
  extensions: []
26
-
27
19
  extra_rdoc_files: []
28
-
29
- files:
20
+ files:
30
21
  - lib/threadlimiter.rb
31
22
  - lib/threadlimiter/enumerable.rb
32
23
  - lib/threadlimiter/threadlimiter.rb
@@ -38,43 +29,36 @@ files:
38
29
  - test/test.rb
39
30
  homepage: http://www.erikveen.dds.nl/threadlimiter/index.html
40
31
  licenses: []
41
-
42
32
  post_install_message:
43
- rdoc_options:
33
+ rdoc_options:
44
34
  - README
45
35
  - LICENSE
46
36
  - VERSION
47
37
  - CHANGELOG
48
38
  - --title
49
- - threadlimiter (0.2.0)
39
+ - threadlimiter (0.2.1)
50
40
  - --main
51
41
  - README
52
- require_paths:
42
+ require_paths:
53
43
  - lib
54
- required_ruby_version: !ruby/object:Gem::Requirement
44
+ required_ruby_version: !ruby/object:Gem::Requirement
55
45
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
- version: "0"
63
- required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
51
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- hash: 3
69
- segments:
70
- - 0
71
- version: "0"
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
72
56
  requirements: []
73
-
74
57
  rubyforge_project: threadlimiter
75
- rubygems_version: 1.8.12
58
+ rubygems_version: 1.8.18
76
59
  signing_key:
77
60
  specification_version: 3
78
- summary: Fork threads like Thread.fork, but limit the number of concurrently running threads.
79
- test_files:
61
+ summary: Fork threads like Thread.fork, but limit the number of concurrently running
62
+ threads.
63
+ test_files:
80
64
  - test/test.rb