Skip to content

Instantly share code, notes, and snippets.

@guyboertje
Created September 16, 2015 11:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guyboertje/136295a585fd97fbdc81 to your computer and use it in GitHub Desktop.
Save guyboertje/136295a585fd97fbdc81 to your computer and use it in GitHub Desktop.
Check of sleeping threads
irb(main):067:0> s2 = Supervisor2.new
=> #<Supervisor2:0x5fbdfdcf>
irb(main):068:0> s2.run
sleeping for 30
=> [#<Thread:0x156b88f5 run>, #<Thread:0x3bf9ce3e run>]
irb(main):069:0> s2.stop
=> [#<Thread:0x156b88f5 dead>, #<Thread:0x3bf9ce3e run>]
irb(main):070:0> s3 = Supervisor3.new
=> #<Supervisor3:0x71def8f8>
irb(main):071:0> s3.run
sleeping for 30
=> [#<Thread:0x5562c41e sleep>, #<Thread:0x3bf9ce3e run>]
irb(main):072:0> s3.stop
=> [#<Thread:0x5562c41e dead>, #<Thread:0x3bf9ce3e run>]
irb(main):073:0> s1 = Supervisor1.new
=> #<Supervisor1:0x4d0f2471>
irb(main):074:0> s1.run
sleeping for 30
=> [#<Thread:0x47faa49c run>, #<Thread:0x3bf9ce3e run>]
irb(main):075:0> Thread.list
=> [#<Thread:0x47faa49c sleep>, #<Thread:0x3bf9ce3e run>]
irb(main):076:0> s1.stop
=> [#<Thread:0x47faa49c sleep>, #<Thread:0x3bf9ce3e run>]
irb(main):077:0> Thread.list
=> [#<Thread:0x47faa49c sleep>, #<Thread:0x3bf9ce3e run>]
irb(main):078:0> Thread.list.first.run
=> #<Thread:0x3bf9ce3e run>
irb(main):079:0> Thread.list
=> [#<Thread:0x3bf9ce3e run>]
irb(main):080:0>
class RunnerA
def run
@stop = false
while !@stop do
puts 'sleeping for 30'
sleep(30)
end
end
def stop
@stop = true
end
end
class RunnerB
def run
@stop = false
@mythread = Thread.current
while !@stop do
puts 'sleeping for 30'
sleep(30)
end
end
def stop
@stop = true
@mythread.run
end
end
class Supervisor1
def run
@ri = RunnerA.new
@rt = Thread.new { @ri.run }
Thread.list
end
def stop
@ri.stop
Thread.list
end
end
class Supervisor2
def run
@ri = RunnerA.new
@rt = Thread.new { @ri.run }
Thread.list
end
def stop
@ri.stop
@rt.run
Thread.list
end
end
class Supervisor3
def run
@ri = RunnerB.new
@rt = Thread.new { @ri.run }
Thread.list
end
def stop
@ri.stop
Thread.list
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment