From: Bogdan Cristea <cristeab@gmail.com>
To: Randi Botse <nightdecoder@gmail.com>
Cc: linux-c-programming@vger.kernel.org
Subject: Re: Co-thread for parallel processing
Date: Fri, 2 Dec 2011 10:28:38 +0100 [thread overview]
Message-ID: <201112021028.38892.cristeab@gmail.com> (raw)
In-Reply-To: <CAA6iF_4z_MPpU8Eq+i+PT-+VgpX_ZXX5FwOwa2NpLxW_gyzTSg@mail.gmail.com>
On Friday 02 December 2011 10:23:49 you wrote:
> My program use co-threads, because creating and reinitialize thread is
> expensive, it first create threads and reuse them. The main thread
> will send each co-thread a event (through condition variable)
> simultaneously to do task in parallel way. Each co-thread has variety
> work-time, let say it can be (in miliseconds) 200ms, 130ms, 317ms,
> 90ms etc to get result to be consumed by main thread.
>
> Here I did to wake-up all threads in the main thread:
>
> .....
> for (i = 0; i < nthread; i++)
> pthread_cond_broadcast(&cond);
> wait_all_worker(); /* wait for all worker threads to finish */
> get_all_worker_result(); /* get result from all worker thread */
> ...
>
>
> And worker-thread routines:
>
> ...
> for (;;) {
> pthread_mutex_lock();
> pthread_cond_wait();
> pthread_mutex_unlock();
>
> do_work();
> fill_result();
> }
> ....
>
> My dilema is:
>
> 1. What the proper way to the main thread to wait for all co-threads
> until finished?
I would use a semaphore which should be locked by the treads once the
condition variable is set en unlocked when the result is available for the
main thread.
> 2. After calling pthread_cond_signal() or pthread_cond_broadcast()
> followed by sleep()/nanosleep(),
> the condition variable looks like not signaled, (the co-thread
> routine doesn't run). What make this?
I don't understand, please provide a working example
--
Bogdan
next prev parent reply other threads:[~2011-12-02 9:28 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-02 9:23 Co-thread for parallel processing Randi Botse
2011-12-02 9:28 ` Bogdan Cristea [this message]
2011-12-02 10:10 ` Randi Botse
2011-12-02 11:26 ` Srinivasa T N
2011-12-03 21:13 ` Hendrik Visage
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201112021028.38892.cristeab@gmail.com \
--to=cristeab@gmail.com \
--cc=linux-c-programming@vger.kernel.org \
--cc=nightdecoder@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).