FW: Fox threading issues

Also the version of fox on linux is 1.0.26 and FXRuby is 1.0.14. On
Windows it is whatever is with the 1.6.7 Ruby Central installer.

···

-----Original Message-----
From: Steve Tuckner
Sent: Tuesday, December 03, 2002 5:01 PM
To: ruby-talk@ruby-lang.org
Subject: Fox threading issues

I have a simple program (down below) that causes different failures on
the 1.6.7 MSC build (from RubyCentral) and on Linux with 1.6.7. On
Windows the program just locks up. On Linux (as on cygwin) it runs for a
while and then seg faults. Any ideas anyone?

Steve Tuckner

require "thread"
require “fox”

include Fox

class MainWindow < FXMainWindow
def initialize(app)

Invoke base class initialize first

super(app, “Main Window”, nil, nil, DECOR_ALL, 0, 0, 400, 200)

menubar = FXMenubar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)

File Menu

filemenu = FXMenuPane.new(self)
FXMenuCommand.new(filemenu, “&Quit”, nil, getApp(), FXApp::ID_QUIT, 0)
FXMenuTitle.new(menubar, “&File”, nil, filemenu)

label = FXLabel.new(self, "Count: ")
@countLabel = FXLabel.new(self, “0”)

button = FXButton.new(self, “Reset Count”)
button.connect(SEL_COMMAND) do
$count = 0
end
end

def onTimeout(sender, sel, ptr)
$lock.synchronize {
@countLabel.setText($count.to_s)
}
getApp().addTimeout(100, method(:onTimeout))
end

def create
super
show(PLACEMENT_SCREEN)
getApp().addTimeout(100, method(:onTimeout))
end
end

$count = 0
$lock = Mutex.new

w = Thread.new do
loop do
#File.open(“thrd.rb”, “r”) do |f|
#data = f.read
#end

$lock.synchronize {
$count += 1
}
sleep 0
end
end

Make an application

application = FXApp.new(“Dialog”, “FoxTest”)
application.init(ARGV)
MainWindow.new(application)
application.create
application.run