How to achieve parallelism, using threads?

Hey,
I’m having a hard time figuring out how threads works, and how to use
them. I’m currently working on a project were I need to achieve
parallelism in the code, but I always ends up with a multiply threads,
working in a queue (after each other, as a single thread program).

If we take a look at the code example bellow. What I’m trying to achieve
is the following.
The main loop starts a new thread, executes it and then CONTINUES,
without waiting for
the thread to finish. They should work simultaneously.

The problem is, they don’t. So, I tried executing the thread without
using join. But it crashed
the program since the thread didn’t have time to finish.

Can someone please help me?

//Walle

Example code
def func()
#Tcp connection and more
end

def main_loop()
#do some work
aThread = Thread.new {func()}
aThread.join
end

main_loop()

On Wed, May 26, 2010 at 12:07 PM, Walle W. [email protected]
wrote:

the thread to finish. They should work simultaneously.
When you call join, the main thread waits for the other to complete.

The problem is, they don’t. So, I tried executing the thread without
using join. But it crashed
the program since the thread didn’t have time to finish.

So you want the main thread to do some work in parallel with the other
thread but then wait for it before exiting the program?
Then, you should start the thread, then do main’s work, and then
finally join the thread:

def func()
#Tcp connection and more
end

def main_loop()
aThread = Thread.new {func()}
#do some work
aThread.join
end

main_loop()

Jesus.

So you want the main thread to do some work in parallel with the other
thread but then wait for it before exiting the program?
Then, you should start the thread, then do main’s work, and then
finally join the thread:

That achieves the same result, or close to it. I don’t want the main
thread to wait for the second thread do finish, but in the same
time I have to, otherwise the program crashes.

So, the main threads should launch a seconds thread, and then
continue with it’s work, and ignore the second thread. The
seconds thread should run in it’s on speed, and don’t have to
finish before the main thread/loop does.

Hehe, I’m having a hard time explaining what I’m trying to achieve

//Walle

On Wed, May 26, 2010 at 12:38 PM, Walle W. [email protected]
wrote:

So, the main threads should launch a seconds thread, and then
continue with it’s work, and ignore the second thread. The
seconds thread should run in it’s on speed, and don’t have to
finish before the main thread/loop does.

Hehe, I’m having a hard time explaining what I’m trying to achieve

I think it’s clear, and what you have to do is what I explained. The
main thread launches the second thread and then goes on with its work.
Once the main thread finished all its work and it’s about to exit the
program, that’s when you join the other thread, to ensure it finishes.

Jesus.

I think it’s clear, and what you have to do is what I explained. The
main thread launches the second thread and then goes on with its work.
Once the main thread finished all its work and it’s about to exit the
program, that’s when you join the other thread, to ensure it finishes.

Jesus.

Okey, I think I got it.
Thanks, I really appreciate

Walle W. wrote:

I think it’s clear, and what you have to do is what I explained. The
main thread launches the second thread and then goes on with its work.
Once the main thread finished all its work and it’s about to exit the
program, that’s when you join the other thread, to ensure it finishes.

Jesus.

Okey, I think I got it.
Thanks, I really appreciate

it.
//Walle