atomic-ruby 0.3.0 → 0.3.1
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 +4 -4
- data/CHANGELOG.md +5 -1
- data/README.md +11 -11
- data/lib/atomic-ruby/atomic_ruby.bundle +0 -0
- data/lib/atomic-ruby/atomic_thread_pool.rb +3 -3
- data/lib/atomic-ruby/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc55b63bd9de85a395232f89184e97aa80e08e8e082981f2b17012fd1b56b5c0
|
4
|
+
data.tar.gz: 25cffc0cbb45f1d145d3b99380decc91a39ef82415833781bed40ba2583286a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1420ff50010eec4386301619d4866c1e96aec8f91936e464b2ed56276607fd6dfaf88d0cc5582ee255c06a15928a2b1390f1a2e18ceb443ee0d74fa190a36ee9
|
7
|
+
data.tar.gz: 80ceb6dd2348ea38bbd8b63223fc7ab27a6d36026d0e028fc0aef60dd9f92885b29adb5fa997b551b54c9aadbaca24fdd71a4f7b1d94337f3a3887955c108a5b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -155,7 +155,7 @@ results = []
|
|
155
155
|
|
156
156
|
5.times.map do |idx|
|
157
157
|
Thread.new do
|
158
|
-
|
158
|
+
25.times do
|
159
159
|
account.deposit(idx + 1)
|
160
160
|
sleep(0.2)
|
161
161
|
account.deposit(idx + 2)
|
@@ -189,17 +189,17 @@ puts "Atomic Ruby Atomic Bank Account: #{results[2].real.round(6)} seconds"
|
|
189
189
|
|
190
190
|
ruby version: ruby 3.4.4 (2025-05-14 revision a38531fd3f) +YJIT +PRISM [arm64-darwin24]
|
191
191
|
concurrent-ruby version: 1.3.5
|
192
|
-
atomic-ruby version: 0.
|
192
|
+
atomic-ruby version: 0.3.0
|
193
193
|
|
194
194
|
Balances:
|
195
|
-
Synchronized Bank Account Balance:
|
196
|
-
Concurrent Ruby Atomic Bank Account Balance:
|
197
|
-
Atomic Ruby Atomic Bank Account Balance:
|
195
|
+
Synchronized Bank Account Balance: 975
|
196
|
+
Concurrent Ruby Atomic Bank Account Balance: 975
|
197
|
+
Atomic Ruby Atomic Bank Account Balance: 975
|
198
198
|
|
199
199
|
Benchmark Results:
|
200
|
-
Synchronized Bank Account:
|
201
|
-
Concurrent Ruby Atomic Bank Account:
|
202
|
-
Atomic Ruby Atomic Bank Account:
|
200
|
+
Synchronized Bank Account: 5.125638 seconds
|
201
|
+
Concurrent Ruby Atomic Bank Account: 5.114936 seconds
|
202
|
+
Atomic Ruby Atomic Bank Account: 5.108171 seconds
|
203
203
|
```
|
204
204
|
|
205
205
|
</details>
|
@@ -340,11 +340,11 @@ puts "Atomic Ruby Atomic Thread Pool: #{results[1].real.round(6)} seconds"
|
|
340
340
|
|
341
341
|
ruby version: ruby 3.4.4 (2025-05-14 revision a38531fd3f) +YJIT +PRISM [arm64-darwin24]
|
342
342
|
concurrent-ruby version: 1.3.5
|
343
|
-
atomic-ruby version: 0.
|
343
|
+
atomic-ruby version: 0.3.0
|
344
344
|
|
345
345
|
Benchmark Results:
|
346
|
-
Concurrent Ruby Thread Pool: 5.
|
347
|
-
Atomic Ruby Atomic Thread Pool: 4.
|
346
|
+
Concurrent Ruby Thread Pool: 5.136456 seconds
|
347
|
+
Atomic Ruby Atomic Thread Pool: 4.700981 seconds
|
348
348
|
```
|
349
349
|
|
350
350
|
</details>
|
Binary file
|
@@ -27,7 +27,7 @@ module AtomicRuby
|
|
27
27
|
raise InvalidWorkQueueingError, "cannot queue work during or after pool shutdown"
|
28
28
|
end
|
29
29
|
|
30
|
-
@queue.swap { |
|
30
|
+
@queue.swap { |current_queue| current_queue += [work] }
|
31
31
|
true
|
32
32
|
end
|
33
33
|
|
@@ -53,11 +53,11 @@ module AtomicRuby
|
|
53
53
|
name = "AtomicRuby::AtomicThreadPool thread #{idx}"
|
54
54
|
Thread.current.name = name
|
55
55
|
|
56
|
-
@started_threads.swap { |
|
56
|
+
@started_threads.swap { |current_count| current_count + 1 }
|
57
57
|
|
58
58
|
loop do
|
59
59
|
work = nil
|
60
|
-
@queue.swap { |
|
60
|
+
@queue.swap { |current_queue| work = current_queue.last; current_queue[0..-2] }
|
61
61
|
case work
|
62
62
|
when Proc
|
63
63
|
begin
|
data/lib/atomic-ruby/version.rb
CHANGED