linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Co-thread for parallel processing
@ 2011-12-02  9:23 Randi Botse
  2011-12-02  9:28 ` Bogdan Cristea
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Randi Botse @ 2011-12-02  9:23 UTC (permalink / raw)
  To: linux-c-programming

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?
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?

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-12-03 21:13 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-02  9:23 Co-thread for parallel processing Randi Botse
2011-12-02  9:28 ` Bogdan Cristea
2011-12-02 10:10   ` Randi Botse
2011-12-02 11:26 ` Srinivasa T N
2011-12-03 21:13 ` Hendrik Visage

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