how to achieve parallelism, using threads?

W

Walle Wallen

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()
 
J

Jesús Gabriel y Galán

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.

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.
 
W

Walle Wallen

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
 
J

Jesús Gabriel y Galán

That achieves the same result, or close to it. =A0I 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

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.
 
W

Walle Wallen

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
 

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