Prev | Next |
include "team_thread.hpp"
ok = team_create(num_threads)
ok = team_work(worker)
ok = team_destroy()
name = team_name()
AD<double>
.
For example,
these could be OpenMP threads, pthreads, or Boost threads to name a few.
team_create
,
team_work
, and
team_destroy
, must all be done by the master thread; i.e.,
thread_num
must be zero.
In addition, they must all be done in sequential execution mode; i.e.,
when the master thread is the only thread that is running
(in_parallel
must be false).
num_threads > 0
has type size_t
and specifies the number of threads in this team.
This initializes both AD<double>
and team_work
to be used with
num_threads
.
If
num_threads > 1
,
num_threads - 1
new threads are created
and put in a waiting state until team_work
is called.
team_create
and team_destroy
.
The argument
worker
has type
bool worker(void)
.
Each call to team_work
runs
num_threads
versions
of
worker
with the corresponding value of
thread_num
between zero and
num_threads - 1
and
different for each thread,
thread_num = 1 , ... , num_threads-1
const char* name
and is a statically allocated '\0'
terminated C string.
ok
has type bool
.
It is false
if an error is detected during the
corresponding call.
Otherwise it is true
.
team_openmp.cpp | OpenMP Implementation of a Team of AD Threads |
team_bthread.cpp | Boost Thread Implementation of a Team of AD Threads |
team_pthread.cpp | Pthread Implementation of a Team of AD Threads |
harmonic.cpp | Multi-Threading Harmonic Summation Example / Test |
multi_newton.cpp | Multi-Threaded Newton Method Example / Test |
# include <cstddef> // for size_t extern bool team_create(size_t num_threads); extern bool team_work(void worker(void)); extern bool team_destroy(void); extern const char* team_name(void);