diff options
Diffstat (limited to 'mrbgems/mruby-task/examples/inspection.rb')
| -rw-r--r-- | mrbgems/mruby-task/examples/inspection.rb | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/mrbgems/mruby-task/examples/inspection.rb b/mrbgems/mruby-task/examples/inspection.rb new file mode 100644 index 0000000..08068f5 --- /dev/null +++ b/mrbgems/mruby-task/examples/inspection.rb @@ -0,0 +1,65 @@ +# Task Inspection Example +# Demonstrates task status and inspect methods + +puts "=== Task Inspection Demo ===" +puts + +# Create some tasks +worker1 = Task.new(name: "worker-1") do + puts "Worker 1: Starting" + puts "Worker 1: My status is #{Task.current.status}" + puts "Worker 1: My inspect is #{Task.current.inspect}" + sleep 0.5 + puts "Worker 1: Finished" +end + +worker2 = Task.new(name: "worker-2") do + sleep 1 + puts "Worker 2: Finished" +end + +# Inspect before running +puts "Initial task states:" +puts " worker1: #{worker1.inspect}" +puts " status=#{worker1.status}" +puts " worker2: #{worker2.inspect}" +puts " status=#{worker2.status}" +puts + +# Create an observer task +observer = Task.new(name: "observer") do + sleep 0.2 + + puts "\nObserver checking task states:" + puts " worker1: #{worker1.inspect}" + puts " status=#{worker1.status}" + puts " worker2: #{worker2.inspect}" + puts " status=#{worker2.status}" + + sleep 0.5 + + # Suspend worker2 + worker2.suspend + puts "\nObserver suspended worker2:" + puts " worker2: #{worker2.inspect}" + puts " status=#{worker2.status}" + + sleep 0.3 + + # Resume and terminate + worker2.resume + sleep 0.1 + worker2.terminate + + puts "\nObserver terminated worker2:" + puts " worker2: #{worker2.inspect}" + puts " status=#{worker2.status}" +end + +# Run the scheduler +Task.run + +puts "\n=== Final states ===" +puts " worker1: #{worker1.inspect} status=#{worker1.status}" +puts " worker2: #{worker2.inspect} status=#{worker2.status}" +puts " observer: #{observer.inspect} status=#{observer.status}" |
