threads demo from pickaxe book - newbie question

C

Christopher Rose

All,

Please forgive a newbie question - I have tried searching for errata on
the Pickaxe book (2nd ed) but not found an answer. I am running Ruby
1.8.2 on WinXP. I type in, or source from file, the example - from pg.
143, copied below - into the interactive ruby prompt in the fxri tool.
I get to the line

t1.join ; t2.join

and the tool hangs. Is this expected? Is there some better way(s) to
debug thread-related issues? Thanks for any advice -

Chris

P.S. Could someone please explain the purpose of the 'super' command in
this script? Thx -

-----------------------<begin example pg. 143>----------------------



# with my current version of fxri, this hangs
require 'monitor'
class Counter < Monitor
attr_reader :count
def initialize
@count = 0
super
end
def tick
synchronize do
@count += 1
end
end
end

c = Counter.new
t1 = Thread.new { 100_000.times { c.tick } }
t2 = Thread.new { 100_000.times { c.tick } }

t1.join ; t2.join

c.count
 
A

Amos King

The super call is calling the initialize function in The base class,
in this case Monitor

All,

Please forgive a newbie question - I have tried searching for errata on
the Pickaxe book (2nd ed) but not found an answer. I am running Ruby
1.8.2 on WinXP. I type in, or source from file, the example - from pg.
143, copied below - into the interactive ruby prompt in the fxri tool.
I get to the line

t1.join ; t2.join

and the tool hangs. Is this expected? Is there some better way(s) to
debug thread-related issues? Thanks for any advice -

Chris

P.S. Could someone please explain the purpose of the 'super' command in
this script? Thx -

-----------------------<begin example pg. 143>----------------------



# with my current version of fxri, this hangs
require 'monitor'
class Counter < Monitor
attr_reader :count
def initialize
@count = 0
super
end
def tick
synchronize do
@count += 1
end
end
end

c = Counter.new
t1 = Thread.new { 100_000.times { c.tick } }
t2 = Thread.new { 100_000.times { c.tick } }

t1.join ; t2.join

c.count


--
Amos King
Ramped Media
USPS
Programmer/Analyst
St. Louis, MO
Looking for something to do? Visit ImThere.com
 
A

Amos King

I ran your script as a file and not from irb. works just fine, but
really doesn't show the threads working that well. You should just
try something like

t1 = Thread.new { 1_000.times { puts 'thread 1' } }
t2 = Thread.new { 1_000.times { puts 'thread 2' } }
t3 = Thread.new { 1_000.times { puts 'thread 3' } }
t4= Thread.new { 1_000.times { puts 'thread 4' } }

The super call is calling the initialize function in The base class,
in this case Monitor




--
Amos King
Ramped Media
USPS
Programmer/Analyst
St. Louis, MO
Looking for something to do? Visit ImThere.com


--
Amos King
Ramped Media
USPS
Programmer/Analyst
St. Louis, MO
Looking for something to do? Visit ImThere.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top