fiber_scheduler 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fiber_scheduler/compatibility.rb +10 -10
- data/lib/fiber_scheduler/version.rb +1 -1
- data/lib/fiber_scheduler.rb +4 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be3272c27fb319231ce9d78e22324a2b8b0bd5d738ebedf09c070fa1011f68ad
|
4
|
+
data.tar.gz: 0b571efbfd06316e4317103777b144eef1983a1a9089fa9193186e5ae2993c52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c316ab691c76643b0a739eacb93442ba3f3fa8260a82a85ac30669afd71a729b5ed38bdfd91a8d800662259cf7501fcc2fd41c1e1f910146530fc7308375077
|
7
|
+
data.tar.gz: ace4e85ccfe0c3d1b2506d5291a4a31a1de0d45a6f614e2d05ae99b8fa2ef77d076ef0d0ff82a4d45a2a1f56e2d6972f508b6a56658c980d050add5f3429b38a
|
@@ -35,8 +35,8 @@ class FiberScheduler
|
|
35
35
|
|
36
36
|
fiber
|
37
37
|
|
38
|
-
when :
|
39
|
-
# Transfer to current fiber some time after a
|
38
|
+
when :volatile
|
39
|
+
# Transfer to current fiber some time after a volatile fiber yields.
|
40
40
|
unblock(nil, Fiber.current)
|
41
41
|
# Alternative to #unblock: Fiber.scheduler.push(Fiber.current)
|
42
42
|
|
@@ -46,9 +46,9 @@ class FiberScheduler
|
|
46
46
|
rescue Close
|
47
47
|
# Fiber scheduler is closing.
|
48
48
|
ensure
|
49
|
-
|
49
|
+
_volatile.delete(Fiber.current)
|
50
50
|
end
|
51
|
-
|
51
|
+
_volatile[fiber] = nil
|
52
52
|
fiber.tap(&:transfer)
|
53
53
|
|
54
54
|
when nil
|
@@ -63,17 +63,17 @@ class FiberScheduler
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
# #close and #
|
66
|
+
# #close and #_volatile handle a complexity in Async::Scheduler#close, more
|
67
67
|
# specifically this line:
|
68
68
|
# https://github.com/socketry/async/blob/456df488d801572821eaf5ec2fda10e3b9744a5f/lib/async/scheduler.rb#L55
|
69
69
|
def close
|
70
70
|
super
|
71
71
|
rescue
|
72
|
-
if
|
72
|
+
if _volatile.empty?
|
73
73
|
Kernel.raise
|
74
74
|
else
|
75
|
-
# #dup is used because #
|
76
|
-
|
75
|
+
# #dup is used because #_volatile is modified during iteration.
|
76
|
+
_volatile.dup.each do |fiber, _|
|
77
77
|
fiber.raise(Close)
|
78
78
|
end
|
79
79
|
|
@@ -81,8 +81,8 @@ class FiberScheduler
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
def
|
85
|
-
@
|
84
|
+
def _volatile
|
85
|
+
@_volatile ||= {}
|
86
86
|
end
|
87
87
|
|
88
88
|
def self.set_internal!
|
data/lib/fiber_scheduler.rb
CHANGED
@@ -68,7 +68,7 @@ module Kernel
|
|
68
68
|
|
69
69
|
fiber
|
70
70
|
|
71
|
-
when :
|
71
|
+
when :volatile
|
72
72
|
scheduler.unblock(nil, Fiber.current)
|
73
73
|
|
74
74
|
fiber = Fiber.new(blocking: false) do
|
@@ -77,9 +77,9 @@ module Kernel
|
|
77
77
|
rescue FiberScheduler::Compatibility::Close
|
78
78
|
# Fiber scheduler is closing.
|
79
79
|
ensure
|
80
|
-
scheduler.
|
80
|
+
scheduler._volatile.delete(Fiber.current)
|
81
81
|
end
|
82
|
-
scheduler.
|
82
|
+
scheduler._volatile[fiber] = nil
|
83
83
|
fiber.tap(&:transfer)
|
84
84
|
|
85
85
|
when nil
|
@@ -221,7 +221,7 @@ class FiberScheduler
|
|
221
221
|
|
222
222
|
fiber
|
223
223
|
|
224
|
-
when :
|
224
|
+
when :volatile
|
225
225
|
if current != @fiber
|
226
226
|
# nested Fiber.schedule
|
227
227
|
@nested << current
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fiber_scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bruno Sutic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async
|