asynchronous 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/VERSION +1 -1
- data/examples/array_of_value_with_native_threads.rb +31 -0
- data/lib/async.rb +4 -0
- data/lib/asynchronous/kernel.rb +4 -3
- data/lib/asynchronous/parallelism.rb +27 -77
- data/test/test.rb +0 -3
- metadata +7 -7
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZmJmYTIzN2ZlYTA0NGI0Nzc1NDlmMGY5ZWY1OWY2YTVhOWQ2MzMzNw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MTNmMWM4ZTk3ZGRlYjcxYjQwZGRlOWY4MzdmN2ZiNTgyNTUxNDcwNQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MTA4NTVlNzZhOGJiMzk2ZWNjZjE2M2NiMTEwNTJhMGI3OGY0Zjk5NGIyNDYz
|
10
|
+
YThiNWQ4MDUzMGU5MjgzOWVlZTUxZGM0M2M5ZWI3MzM0ODg0YzU5Mjc3N2Nl
|
11
|
+
Y2Q4ZDc0ZTFmZDE4NDdmNGJlYzdmMGE5YTE1ZTAxNGYxNzI1OWI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MGRmNDU3ZWI0MTZmZDhjNWRmZjQ1NmUzYmU5OTRlNmEyMjQyZTQ3YzVkMzZk
|
14
|
+
Y2QzMjZiMTM0ZjhlYmFhMmExMjEyNGIzNzg3OGQwZmIzZGI4MzA3ZjNjYjI2
|
15
|
+
YjZjNjE2NzhmMTY3ZmNkZmEzNzRjNDU5NmI4NzBjNTRkMDYxNWM=
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.3
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'async'
|
2
|
+
|
3
|
+
async1= async :OS do
|
4
|
+
|
5
|
+
1000000*5
|
6
|
+
|
7
|
+
end
|
8
|
+
|
9
|
+
async2= async :OS do
|
10
|
+
|
11
|
+
sleep 10
|
12
|
+
|
13
|
+
"sup" * 10000
|
14
|
+
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
async3= async :OS do
|
20
|
+
|
21
|
+
1000000*5.0
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
# please do remember that parsing an object into
|
26
|
+
# Marshal String can take up time if you have big Strings like
|
27
|
+
# "sup" * 100000000
|
28
|
+
|
29
|
+
puts async1.value,
|
30
|
+
async2.value[0..5],
|
31
|
+
async3.value
|
data/lib/async.rb
ADDED
data/lib/asynchronous/kernel.rb
CHANGED
@@ -12,8 +12,7 @@
|
|
12
12
|
#
|
13
13
|
module Kernel
|
14
14
|
def async(type= :Concurrency ,&block)
|
15
|
-
|
16
|
-
case type.downcase[0]
|
15
|
+
case type.to_s.downcase[0]
|
17
16
|
# Concurrency / VM / Green
|
18
17
|
when "c","v","g"
|
19
18
|
begin
|
@@ -25,7 +24,9 @@ module Kernel
|
|
25
24
|
Asynchronous::Parallelism.new(block)
|
26
25
|
end
|
27
26
|
else
|
28
|
-
|
27
|
+
begin
|
28
|
+
Asynchronous::Concurrency.new(block)
|
29
|
+
end
|
29
30
|
|
30
31
|
end
|
31
32
|
end
|
@@ -17,6 +17,7 @@ module Asynchronous
|
|
17
17
|
@@motherpid ||= $$
|
18
18
|
@@agent ||= nil
|
19
19
|
@@zombie ||= true
|
20
|
+
#::Kernel.require 'yaml'
|
20
21
|
|
21
22
|
end
|
22
23
|
|
@@ -43,7 +44,7 @@ module Asynchronous
|
|
43
44
|
::Kernel.loop do
|
44
45
|
begin
|
45
46
|
::Kernel.sleep 1
|
46
|
-
if
|
47
|
+
if alive?(@@motherpid) == false
|
47
48
|
::Kernel.exit!
|
48
49
|
end
|
49
50
|
end
|
@@ -53,9 +54,16 @@ module Asynchronous
|
|
53
54
|
|
54
55
|
# return the value
|
55
56
|
begin
|
57
|
+
|
58
|
+
return_value= callable.call
|
59
|
+
|
56
60
|
@rd.close
|
57
|
-
@wr.write ::Marshal.dump(
|
61
|
+
@wr.write ::Marshal.dump(return_value)
|
62
|
+
#@wr.write return_value.to_yaml
|
63
|
+
|
58
64
|
@wr.close
|
65
|
+
|
66
|
+
::Process.exit!
|
59
67
|
end
|
60
68
|
|
61
69
|
end
|
@@ -68,80 +76,9 @@ module Asynchronous
|
|
68
76
|
# connection for in case of mother die
|
69
77
|
begin
|
70
78
|
|
71
|
-
|
72
|
-
#
|
73
|
-
# ::Kernel.require "tmpdir"
|
74
|
-
# @@tmpdir= ::File.join(::Dir.tmpdir,('asynchronous'))
|
75
|
-
# unless ::File.directory?(@@tmpdir)
|
76
|
-
# ::Dir.mkdir(@@tmpdir)
|
77
|
-
# end
|
78
|
-
#
|
79
|
-
# %w[ signal ].each do |one_str|
|
80
|
-
# unless ::File.directory?(::File.join(@@tmpdir,one_str))
|
81
|
-
# ::Dir.mkdir(::File.join(@@tmpdir,one_str))
|
82
|
-
# end
|
83
|
-
# end
|
84
|
-
#
|
85
|
-
# # pidnamed tmp file for tracking
|
86
|
-
# unless ::File.exist?(::File.join(@@tmpdir,'signal',@@motherpid.to_s))
|
87
|
-
# ::File.new(::File.join(@@tmpdir,'signal',@@motherpid.to_s),"w").write('')
|
88
|
-
# end
|
89
|
-
#
|
90
|
-
#end
|
91
|
-
#
|
92
|
-
#def tmp_write_agent
|
93
|
-
# if @@agent != true
|
94
|
-
# ::Thread.new do
|
95
|
-
# ::Kernel.loop do
|
96
|
-
# ::File.open(::File.join(@@tmpdir,"signal",@@motherpid.to_s),"w") do |file|
|
97
|
-
# file.write( ::Time.now.to_i.to_s )
|
98
|
-
# end
|
99
|
-
# sleep 3
|
100
|
-
# end
|
101
|
-
# end
|
102
|
-
# @@agent ||= true
|
103
|
-
# end
|
104
|
-
#end
|
105
|
-
#
|
106
|
-
#def tmp_read
|
107
|
-
#
|
108
|
-
# counter= 0
|
109
|
-
# begin
|
110
|
-
#
|
111
|
-
# ::Kernel.loop do
|
112
|
-
# return_string= ::File.open(
|
113
|
-
# ::File.join(@@tmpdir,"signal",@@motherpid.to_s),
|
114
|
-
# ::File::RDONLY
|
115
|
-
# ).read
|
116
|
-
#
|
117
|
-
# if !return_string.nil? && return_string != ""
|
118
|
-
# return return_string
|
119
|
-
# else
|
120
|
-
# if counter > 5
|
121
|
-
# return nil
|
122
|
-
# else
|
123
|
-
# counter += 1
|
124
|
-
# ::Kernel.sleep(1)
|
125
|
-
# end
|
126
|
-
# end
|
127
|
-
#
|
128
|
-
# end
|
129
|
-
#
|
130
|
-
# rescue ::IOError
|
131
|
-
# if counter > 5
|
132
|
-
# return nil
|
133
|
-
# else
|
134
|
-
# counter += 1
|
135
|
-
# end
|
136
|
-
# ::Kernel.sleep 1
|
137
|
-
# retry
|
138
|
-
# end
|
139
|
-
#
|
140
|
-
#end
|
141
|
-
|
142
|
-
def mother?
|
79
|
+
def alive?(pid)
|
143
80
|
begin
|
144
|
-
::Process.kill(0
|
81
|
+
::Process.kill(0,pid)
|
145
82
|
return true
|
146
83
|
rescue ::Errno::ESRCH
|
147
84
|
return false
|
@@ -157,9 +94,22 @@ module Asynchronous
|
|
157
94
|
|
158
95
|
if @value.nil?
|
159
96
|
|
97
|
+
|
98
|
+
#while alive?(@pid)
|
99
|
+
# ::Kernel.puts alive? @pid
|
100
|
+
# ::Kernel.sleep 1
|
101
|
+
# #sleep 1
|
102
|
+
#end
|
103
|
+
|
160
104
|
@wr.close
|
161
|
-
return_value=
|
105
|
+
return_value= @rd.read
|
162
106
|
@rd.close
|
107
|
+
|
108
|
+
#::Kernel.puts return_value.inspect
|
109
|
+
|
110
|
+
return_value= ::Marshal.load(return_value)
|
111
|
+
#return_value= ::YAML.load(return_value)
|
112
|
+
|
163
113
|
@@pids.delete(@pid)
|
164
114
|
@value= return_value
|
165
115
|
|
@@ -182,7 +132,7 @@ module Asynchronous
|
|
182
132
|
begin
|
183
133
|
::Process.kill(:TERM, pid)
|
184
134
|
rescue ::Errno::ESRCH, ::Errno::ECHILD
|
185
|
-
|
135
|
+
#::STDOUT.puts "`kill': No such process (Errno::ESRCH)"
|
186
136
|
end
|
187
137
|
}
|
188
138
|
}
|
data/test/test.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asynchronous
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Adam Luzsi
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-16 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: ! 'DSL for for dead simple to use asynchronous patterns in both VM managed
|
15
14
|
and OS managed way (Concurrency and Parallelism) '
|
@@ -27,9 +26,11 @@ files:
|
|
27
26
|
- Rakefile
|
28
27
|
- VERSION
|
29
28
|
- asynchronous.gemspec
|
29
|
+
- examples/array_of_value_with_native_threads.rb
|
30
30
|
- examples/async_patterns.rb
|
31
31
|
- examples/no_zombie_test.rb
|
32
32
|
- files.rb
|
33
|
+
- lib/async.rb
|
33
34
|
- lib/asynchronous.rb
|
34
35
|
- lib/asynchronous/clean_class.rb
|
35
36
|
- lib/asynchronous/concurrency.rb
|
@@ -39,27 +40,26 @@ files:
|
|
39
40
|
homepage: https://github.com/adamluzsi/asynchronous
|
40
41
|
licenses:
|
41
42
|
- MIT
|
43
|
+
metadata: {}
|
42
44
|
post_install_message:
|
43
45
|
rdoc_options: []
|
44
46
|
require_paths:
|
45
47
|
- lib
|
46
48
|
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
-
none: false
|
48
49
|
requirements:
|
49
50
|
- - ! '>='
|
50
51
|
- !ruby/object:Gem::Version
|
51
52
|
version: '0'
|
52
53
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
54
|
requirements:
|
55
55
|
- - ! '>='
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: '0'
|
58
58
|
requirements: []
|
59
59
|
rubyforge_project:
|
60
|
-
rubygems_version:
|
60
|
+
rubygems_version: 2.2.1
|
61
61
|
signing_key:
|
62
|
-
specification_version:
|
62
|
+
specification_version: 4
|
63
63
|
summary: Simple Async Based on standard CRuby
|
64
64
|
test_files:
|
65
65
|
- test/test.rb
|