M
Matt Brooks
All Day I have tried to accomplish the following using threads, and just
could not get it to work. I want them to thrash back and forth having
the power to do stuff....
I want two threads to execute and fight each other to send commands to a
unit. With each thread they just call methods with certain arguments.
I want them to send the commands at the same time.
I guess I am realizing that isn't possible, only one will have control
at a time, thats fine, I want them to pass control to each other
continously, seemingly randomly to me from the outside.
Also in both threads i have a forever loop.
so for example
a = Thread.new do
loop do
method that sends commands, about 60 of them
end
end
b = Thread.new do
loop do
method that sends different commands, about 20 of them
end
end
no matter what, thread a only runs a few commands before thead b takes
over forever, and thread a never executes again.
To combat the problem I tried doing this after the creation of the
threads, in main I guess you call it...
loop do
a.priority = -1
b.priority = -2
sleep(50)
b.priority = -1
a.priority = -2
end
I also tried positioning Thread.pass randomly throughout the two
threads, hoping that would tell the thread, hey let the other guy have a
chance, then that thread would get to his Thread.pass meaning let the
first guy have a chance to send some stuff!!
All these ways have some outcome, just the second thread executes
forever....
Any ideas, thank you very much for the help!!
could not get it to work. I want them to thrash back and forth having
the power to do stuff....
I want two threads to execute and fight each other to send commands to a
unit. With each thread they just call methods with certain arguments.
I want them to send the commands at the same time.
I guess I am realizing that isn't possible, only one will have control
at a time, thats fine, I want them to pass control to each other
continously, seemingly randomly to me from the outside.
Also in both threads i have a forever loop.
so for example
a = Thread.new do
loop do
method that sends commands, about 60 of them
end
end
b = Thread.new do
loop do
method that sends different commands, about 20 of them
end
end
no matter what, thread a only runs a few commands before thead b takes
over forever, and thread a never executes again.
To combat the problem I tried doing this after the creation of the
threads, in main I guess you call it...
loop do
a.priority = -1
b.priority = -2
sleep(50)
b.priority = -1
a.priority = -2
end
I also tried positioning Thread.pass randomly throughout the two
threads, hoping that would tell the thread, hey let the other guy have a
chance, then that thread would get to his Thread.pass meaning let the
first guy have a chance to send some stuff!!
All these ways have some outcome, just the second thread executes
forever....
Any ideas, thank you very much for the help!!