Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

WKFThreads.h File Reference

Go to the source code of this file.

Compounds

struct  wkf_run_barrier_struct
struct  wkf_shared_iterator_struct
struct  wkf_tasktile_struct
struct  wkf_threadlaunch_struct
struct  wkf_threadpool_struct
struct  wkf_threadpool_workerdata_struct
struct  wkf_tilestack_t

Defines

#define WKF_THREADS_INC   1
#define WKF_TILESTACK_EMPTY   -1
#define WKF_SCHED_DONE   -1 /**< no work left to process */
#define WKF_SCHED_CONTINUE   0 /**< some work remains in the queue */
#define WKF_THREADPOOL_DEVLIST_CPUSONLY   NULL
#define WKF_THREADPOOL_DEVID_CPU   -1

Typedefs

typedef int wkf_thread_t
typedef int wkf_mutex_t
typedef int wkf_cond_t
typedef wkf_run_barrier_struct wkf_run_barrier_t
typedef wkf_tasktile_struct wkf_tasktile_t
typedef wkf_shared_iterator_struct wkf_shared_iterator_t
typedef wkf_threadpool_workerdata_struct wkf_threadpool_workerdata_t
typedef wkf_threadpool_struct wkf_threadpool_t
typedef wkf_threadlaunch_struct wkf_threadlaunch_t

Functions

int wkf_thread_numphysprocessors (void)
int wkf_thread_numprocessors (void)
int * wkf_cpu_affinitylist (int *cpuaffinitycount)
int wkf_thread_set_self_cpuaffinity (int cpu)
int wkf_thread_setconcurrency (int)
int wkf_thread_create (wkf_thread_t *, void *fctn(void *), void *)
int wkf_thread_join (wkf_thread_t, void **)
int wkf_mutex_init (wkf_mutex_t *)
int wkf_mutex_lock (wkf_mutex_t *)
int wkf_mutex_trylock (wkf_mutex_t *)
int wkf_mutex_spin_lock (wkf_mutex_t *)
int wkf_mutex_unlock (wkf_mutex_t *)
int wkf_mutex_destroy (wkf_mutex_t *)
int wkf_cond_init (wkf_cond_t *)
int wkf_cond_destroy (wkf_cond_t *)
int wkf_cond_wait (wkf_cond_t *, wkf_mutex_t *)
int wkf_cond_signal (wkf_cond_t *)
int wkf_cond_broadcast (wkf_cond_t *)
int wkf_thread_run_barrier_init (wkf_run_barrier_t *barrier, int n_clients)
void wkf_thread_run_barrier_destroy (wkf_run_barrier_t *barrier)
int wkf_thread_run_barrier_poll (wkf_run_barrier_t *barrier)
int wkf_tilestack_init (wkf_tilestack_t *s, int size)
void wkf_tilestack_destroy (wkf_tilestack_t *)
int wkf_tilestack_compact (wkf_tilestack_t *)
int wkf_tilestack_push (wkf_tilestack_t *, const wkf_tasktile_t *)
int wkf_tilestack_pop (wkf_tilestack_t *, wkf_tasktile_t *)
int wkf_tilestack_popall (wkf_tilestack_t *)
int wkf_tilestack_empty (wkf_tilestack_t *)
int wkf_shared_iterator_init (wkf_shared_iterator_t *it)
int wkf_shared_iterator_destroy (wkf_shared_iterator_t *it)
int wkf_shared_iterator_set (wkf_shared_iterator_t *it, wkf_tasktile_t *tile)
int wkf_shared_iterator_next_tile (wkf_shared_iterator_t *it, int reqsize, wkf_tasktile_t *tile)
int wkf_shared_iterator_setfatalerror (wkf_shared_iterator_t *it)
int wkf_shared_iterator_getfatalerror (wkf_shared_iterator_t *it)
wkf_threadpool_twkf_threadpool_create (int workercount, int *devlist)
int wkf_threadpool_launch (wkf_threadpool_t *thrpool, void *fctn(void *), void *parms, int blocking)
int wkf_threadpool_wait (wkf_threadpool_t *thrpool)
int wkf_threadpool_destroy (wkf_threadpool_t *thrpool)
int wkf_threadpool_get_workercount (wkf_threadpool_t *thrpool)
int wkf_threadpool_worker_getid (void *voiddata, int *threadid, int *threadcount)
int wkf_threadpool_worker_getdevid (void *voiddata, int *devid)
int wkf_threadpool_worker_setdevspeed (void *voiddata, float speed)
int wkf_threadpool_worker_getdevspeed (void *voiddata, float *speed)
int wkf_threadpool_worker_devscaletile (void *voiddata, int *tilesize)
int wkf_threadpool_worker_getdata (void *voiddata, void **clientdata)
int wkf_threadpool_sched_dynamic (wkf_threadpool_t *thrpool, wkf_tasktile_t *tile)
int wkf_threadpool_next_tile (void *thrpool, int reqsize, wkf_tasktile_t *tile)
int wkf_threadpool_tile_failed (void *thrpool, wkf_tasktile_t *tile)
int wkf_threadpool_setfatalerror (void *thrparms)
int wkf_threadpool_getfatalerror (void *thrparms)
int wkf_threadlaunch (int numprocs, void *clientdata, void *fctn(void *), wkf_tasktile_t *tile)
int wkf_threadlaunch_getid (void *thrparms, int *threadid, int *threadcount)
int wkf_threadlaunch_getdata (void *thrparms, void **clientdata)
int wkf_threadlaunch_next_tile (void *voidparms, int reqsize, wkf_tasktile_t *tile)
int wkf_threadlaunch_setfatalerror (void *thrparms)

Variables

void *(*)(void *) wkf_thread_run_barrier (wkf_run_barrier_t *barrier, void *fctn(void *), void *parms, void **rsltparms)


Define Documentation

#define WKF_SCHED_CONTINUE   0 /**< some work remains in the queue */
 

Definition at line 275 of file WKFThreads.h.

Referenced by wkf_shared_iterator_next_tile, and wkf_threadpool_next_tile.

#define WKF_SCHED_DONE   -1 /**< no work left to process */
 

Shared iterators intended for trivial CPU/GPU load balancing with no exception handling capability (all work units must complete with no errors, or else the whole thing is canceled).

Definition at line 274 of file WKFThreads.h.

Referenced by cudadensitythread, cudaenergythread, cudaorbitalthread, densitythread, energythread, openclenergythread, openclorbitalthread, orbitalthread, rdf_thread, reductionthread, text_cmd_parallel, vmddevpoolcudatilelatencythread, vmddevpooltilelatencythread, wkf_shared_iterator_next_tile, and wkf_threadpool_next_tile.

#define WKF_THREADPOOL_DEVID_CPU   -1
 

symbolic constant macro to test if we have a GPU or not

Definition at line 318 of file WKFThreads.h.

#define WKF_THREADPOOL_DEVLIST_CPUSONLY   NULL
 

shortcut macro to tell the create routine we only want CPU cores

Definition at line 315 of file WKFThreads.h.

#define WKF_THREADS_INC   1
 

Definition at line 52 of file WKFThreads.h.

#define WKF_TILESTACK_EMPTY   -1
 

Definition at line 234 of file WKFThreads.h.

Referenced by wkf_threadpool_next_tile, and wkf_tilestack_pop.


Typedef Documentation

typedef int wkf_cond_t
 

Definition at line 111 of file WKFThreads.h.

Referenced by wkf_cond_broadcast, wkf_cond_destroy, wkf_cond_init, wkf_cond_signal, wkf_cond_wait, and wkf_cpu_affinitylist.

typedef int wkf_mutex_t
 

Definition at line 110 of file WKFThreads.h.

Referenced by AtomSelThr::AtomSelThr, bondsearchthread, find_next_cluster, vmd_bondsearch_thr, wkf_cond_wait, wkf_cpu_affinitylist, wkf_mutex_destroy, wkf_mutex_init, wkf_mutex_lock, wkf_mutex_spin_lock, wkf_mutex_trylock, and wkf_mutex_unlock.

typedef struct wkf_run_barrier_struct wkf_run_barrier_t
 

typedef struct wkf_shared_iterator_struct wkf_shared_iterator_t
 

iterator used for dynamic load balancing

typedef struct wkf_tasktile_struct wkf_tasktile_t
 

Task tile struct for stack, iterator, and scheduler routines; 'start' is inclusive, 'end' is exclusive. This yields a half-open interval that corresponds to a typical 'for' loop.

typedef int wkf_thread_t
 

Definition at line 109 of file WKFThreads.h.

Referenced by find_next_cluster, find_within, measure_gofr, VMDCollab::startserver, text_cmd_parallel, vmd_bondsearch_thr, vmd_cuda_bus_bw, vmd_cuda_globmem_bw, vmd_cuda_madd_gflops, wkf_thread_create, wkf_thread_join, wkf_thread_numprocessors, wkf_threadlaunch, and wkf_threadpool_create.

typedef struct wkf_threadlaunch_struct wkf_threadlaunch_t
 

Routines to generate a pool of threads which then grind through a dynamically load balanced work queue implemented as a shared iterator. No exception handling is possible, just a simple all-or-nothing attept. Useful for simple calculations that take very little time. An array of threads is generated, launched, and joined all with one call.

typedef struct wkf_threadpool_struct wkf_threadpool_t
 

typedef struct wkf_threadpool_workerdata_struct wkf_threadpool_workerdata_t
 

thread-specific handle data for workers


Function Documentation

int wkf_cond_broadcast wkf_cond_t  
 

signal a condition variable, waking all threads

Definition at line 633 of file WKFThreads.C.

Referenced by wkf_thread_run_barrier.

int wkf_cond_destroy wkf_cond_t  
 

destroy a condition variable

Definition at line 527 of file WKFThreads.C.

Referenced by wkf_thread_run_barrier_destroy.

int wkf_cond_init wkf_cond_t  
 

initialize a condition variable

Definition at line 494 of file WKFThreads.C.

Referenced by wkf_thread_run_barrier_init.

int wkf_cond_signal wkf_cond_t  
 

signal a condition variable, waking at least one thread

Definition at line 604 of file WKFThreads.C.

int wkf_cond_wait wkf_cond_t  ,
wkf_mutex_t  
 

wait on a condition variable

Definition at line 548 of file WKFThreads.C.

Referenced by wkf_thread_run_barrier.

int* wkf_cpu_affinitylist int *    cpuaffinitycount
 

query CPU affinity of the calling process (if allowed by host system)

Definition at line 160 of file WKFThreads.C.

References wkf_cond_t, and wkf_mutex_t.

Referenced by vmdinfo_tcl.

int wkf_mutex_destroy wkf_mutex_t  
 

destroy a mutex

Definition at line 474 of file WKFThreads.C.

Referenced by find_next_cluster, vmd_bondsearch_thr, wkf_shared_iterator_destroy, wkf_thread_run_barrier_destroy, and wkf_tilestack_destroy.

int wkf_mutex_init wkf_mutex_t  
 

initialize a mutex

Definition at line 379 of file WKFThreads.C.

Referenced by find_next_cluster, IMDSimThread::IMDSimThread, vmd_bondsearch_thr, wkf_shared_iterator_init, wkf_thread_run_barrier_init, and wkf_tilestack_init.

int wkf_mutex_lock wkf_mutex_t  
 

lock a mutex

Definition at line 396 of file WKFThreads.C.

Referenced by bondsearchthread, IMDSimThread::detach, IMDSimThread::get_next_ts, IMDSimThread::kill, IMDSimThread::pause, IMDSimThread::reader, IMDSimThread::send_forces, IMDSimThread::set_transrate, IMDSimThread::unpause, AtomSelThr::update, wkf_shared_iterator_getfatalerror, wkf_shared_iterator_set, wkf_thread_run_barrier, wkf_thread_run_barrier_poll, wkf_tilestack_compact, wkf_tilestack_empty, wkf_tilestack_pop, wkf_tilestack_popall, and wkf_tilestack_push.

int wkf_mutex_spin_lock wkf_mutex_t  
 

lock a mutex by spinning only

Definition at line 434 of file WKFThreads.C.

Referenced by wkf_shared_iterator_next_tile, and wkf_shared_iterator_setfatalerror.

int wkf_mutex_trylock wkf_mutex_t  
 

try to lock a mutex

Definition at line 413 of file WKFThreads.C.

int wkf_mutex_unlock wkf_mutex_t  
 

unlock a mutex

Definition at line 457 of file WKFThreads.C.

Referenced by bondsearchthread, IMDSimThread::detach, IMDSimThread::get_next_ts, IMDSimThread::kill, IMDSimThread::pause, IMDSimThread::reader, IMDSimThread::send_forces, IMDSimThread::set_transrate, IMDSimThread::unpause, AtomSelThr::update, wkf_shared_iterator_getfatalerror, wkf_shared_iterator_next_tile, wkf_shared_iterator_set, wkf_shared_iterator_setfatalerror, wkf_thread_run_barrier, wkf_thread_run_barrier_poll, wkf_tilestack_compact, wkf_tilestack_empty, wkf_tilestack_pop, wkf_tilestack_popall, and wkf_tilestack_push.

int wkf_shared_iterator_destroy wkf_shared_iterator_t   it
 

destroy a shared iterator

Definition at line 916 of file WKFThreads.C.

Referenced by text_cmd_parallel, wkf_threadlaunch, and wkf_threadpool_destroy.

int wkf_shared_iterator_getfatalerror wkf_shared_iterator_t   it
 

master thread calls this to query for fatal errors

Definition at line 991 of file WKFThreads.C.

Referenced by wkf_threadlaunch, and wkf_threadpool_getfatalerror.

int wkf_shared_iterator_init wkf_shared_iterator_t   it
 

initialize a shared iterator

Definition at line 906 of file WKFThreads.C.

Referenced by text_cmd_parallel, wkf_threadlaunch, and wkf_threadpool_create.

int wkf_shared_iterator_next_tile wkf_shared_iterator_t   it,
int    reqsize,
wkf_tasktile_t   tile
 

iterate the shared iterator, over a requested half-open interval

Definition at line 942 of file WKFThreads.C.

Referenced by text_cmd_parallel, wkf_threadlaunch_next_tile, and wkf_threadpool_next_tile.

int wkf_shared_iterator_set wkf_shared_iterator_t   it,
wkf_tasktile_t   tile
 

set shared iterator parameters

Definition at line 925 of file WKFThreads.C.

Referenced by text_cmd_parallel, wkf_threadlaunch, and wkf_threadpool_sched_dynamic.

int wkf_shared_iterator_setfatalerror wkf_shared_iterator_t   it
 

worker thread calls this to indicate a fatal error

Definition at line 978 of file WKFThreads.C.

Referenced by wkf_threadlaunch_setfatalerror, and wkf_threadpool_setfatalerror.

int wkf_thread_create wkf_thread_t  ,
void *fctn(void *)   ,
void *   
 

create a new child thread

Definition at line 321 of file WKFThreads.C.

Referenced by find_next_cluster, find_within, IMDSimThread::IMDSimThread, measure_gofr, VMDCollab::startserver, text_cmd_parallel, vmd_bondsearch_thr, vmd_cuda_bus_bw, vmd_cuda_globmem_bw, vmd_cuda_madd_gflops, wkf_threadlaunch, and wkf_threadpool_create.

int wkf_thread_join wkf_thread_t   ,
void **   
 

join (wait for completion of, and merge with) a thread

Definition at line 353 of file WKFThreads.C.

Referenced by find_next_cluster, find_within, measure_gofr, text_cmd_parallel, vmd_bondsearch_thr, vmd_cuda_bus_bw, vmd_cuda_globmem_bw, vmd_cuda_madd_gflops, wkf_threadlaunch, wkf_threadpool_destroy, and IMDSimThread::~IMDSimThread.

int wkf_thread_numphysprocessors void   
 

If compiling on Linux, enable the GNU CPU affinity functions in both libc and the libpthreads

Definition at line 93 of file WKFThreads.C.

int wkf_thread_numprocessors void   
 

number of processors available, subject to user override

Definition at line 128 of file WKFThreads.C.

References wkf_thread_t.

void wkf_thread_run_barrier_destroy wkf_run_barrier_t   barrier
 

destroy thread pool barrier

Definition at line 684 of file WKFThreads.C.

Referenced by wkf_threadpool_destroy.

int wkf_thread_run_barrier_init wkf_run_barrier_t   barrier,
int    n_clients
 

initialize thread pool barrier

Definition at line 668 of file WKFThreads.C.

Referenced by wkf_threadpool_create.

int wkf_thread_run_barrier_poll wkf_run_barrier_t   barrier
 

non-blocking poll to see if peers are already at the barrier

Definition at line 742 of file WKFThreads.C.

Referenced by wkf_threadpool_poll.

int wkf_thread_set_self_cpuaffinity int    cpu
 

set the CPU affinity of the current thread (if allowed by host system)

Definition at line 249 of file WKFThreads.C.

int wkf_thread_setconcurrency int   
 

set the concurrency level and scheduling scope for threads

Definition at line 294 of file WKFThreads.C.

int wkf_threadlaunch int    numprocs,
void *    clientdata,
void *fctn(void *)   ,
wkf_tasktile_t   tile
 

launch up to numprocs threads using shared iterator as a load balancer

Definition at line 1291 of file WKFThreads.C.

Referenced by evaluate_grid_fast, vmd_cuda_gaussdensity_direct, vmd_cuda_vol_cpotential, vmd_gaussdensity_threaded, vmd_opencl_evaluate_orbital_grid, vmd_opencl_vol_cpotential, and vol_cpotential_cpu.

int wkf_threadlaunch_getdata void *    voidparms,
void **    clientdata
 

worker thread can call this to get its client data pointer

Definition at line 1381 of file WKFThreads.C.

Referenced by cudadensitythread, cudaenergythread, densitythread, energythread, openclenergythread, openclorbitalthread, orbitalthread, and reductionthread.

int wkf_threadlaunch_getid void *    voidparms,
int *    threadid,
int *    threadcount
 

worker thread can call this to get its ID and number of peers

Definition at line 1368 of file WKFThreads.C.

Referenced by cudadensitythread, cudaenergythread, densitythread, energythread, openclenergythread, openclorbitalthread, and reductionthread.

int wkf_threadlaunch_next_tile void *    voidparms,
int    reqsize,
wkf_tasktile_t   tile
 

iterate the shared iterator over the requested half-open interval

Definition at line 1391 of file WKFThreads.C.

Referenced by cudadensitythread, cudaenergythread, densitythread, energythread, openclenergythread, openclorbitalthread, orbitalthread, and reductionthread.

int wkf_threadlaunch_setfatalerror void *    voidparms
 

worker thread calls this to indicate that an unrecoverable error occured

Definition at line 1399 of file WKFThreads.C.

wkf_threadpool_t* wkf_threadpool_create int    workercount,
int *    devlist
 

create a thread pool with a specified number of worker threads

Definition at line 1028 of file WKFThreads.C.

int wkf_threadpool_destroy wkf_threadpool_t   thrpool
 

join all worker threads and free resources

Definition at line 1123 of file WKFThreads.C.

int wkf_threadpool_get_workercount wkf_threadpool_t   thrpool
 

return the number of worker threads currently in the pool

Definition at line 1157 of file WKFThreads.C.

Referenced by rdf_gpu, and vmd_cuda_measure_latencies.

int wkf_threadpool_getfatalerror void *    thrparms
 

master thread calls this to query for fatal errors

Definition at line 1283 of file WKFThreads.C.

int wkf_threadpool_launch wkf_threadpool_t   thrpool,
void *fctn(void *)   ,
void *    parms,
int    blocking
 

launch threads onto a new function, with associated parms

Definition at line 1088 of file WKFThreads.C.

Referenced by CUDAAccel::devpool_launch, rdf_gpu, vmd_cuda_devpool_latency, vmd_cuda_evaluate_orbital_grid, vmd_cuda_measure_latencies, and vmd_opencl_evaluate_orbital_grid.

int wkf_threadpool_next_tile void *    voidparms,
int    reqsize,
wkf_tasktile_t   tile
 

iterate the shared iterator over the requested half-open interval

Definition at line 1248 of file WKFThreads.C.

Referenced by cudaorbitalthread, openclorbitalthread, rdf_thread, vmddevpoolcudatilelatencythread, and vmddevpooltilelatencythread.

int wkf_threadpool_sched_dynamic wkf_threadpool_t   thrpool,
wkf_tasktile_t   tile
 

Set shared iterator state to half-open interval defined by tile

Definition at line 1240 of file WKFThreads.C.

Referenced by rdf_gpu, vmd_cuda_devpool_latency, vmd_cuda_evaluate_orbital_grid, and vmd_opencl_evaluate_orbital_grid.

int wkf_threadpool_setfatalerror void *    thrparms
 

worker thread calls this to indicate that an unrecoverable error occured

Definition at line 1275 of file WKFThreads.C.

int wkf_threadpool_tile_failed void *    voidparms,
wkf_tasktile_t   tile
 

worker thread calls this when a failure occurs on a tile it has already taken from the scheduler

Definition at line 1268 of file WKFThreads.C.

int wkf_threadpool_wait wkf_threadpool_t   thrpool
 

wait for all worker threads to complete their work

Definition at line 1106 of file WKFThreads.C.

Referenced by CUDAAccel::devpool_wait, and vmd_cuda_devpool_latency.

int wkf_threadpool_worker_devscaletile void *    voiddata,
int *    tilesize
 

worker thread calls this to scale max tile size by worker speed as determined by the SM/core count and clock rate

Definition at line 1214 of file WKFThreads.C.

Referenced by cudaorbitalthread, openclorbitalthread, and vmddevpoolcudatilelatencythread.

int wkf_threadpool_worker_getdata void *    voiddata,
void **    clientdata
 

worker thread can call this to get its client data pointer

Definition at line 1230 of file WKFThreads.C.

Referenced by cudaorbitalthread, openclorbitalthread, rdf_thread, vmd_cuda_devpool_setdevice, vmddevpoolcudalatencythread, vmddevpoolcudatilelatencythread, and vmddevpooltilelatencythread.

int wkf_threadpool_worker_getdevid void *    voiddata,
int *    devid
 

worker thread can call this to get its CPU/GPU device ID

Definition at line 1176 of file WKFThreads.C.

Referenced by vmd_cuda_devpool_clear_device_mem, and vmd_cuda_devpool_setdevice.

int wkf_threadpool_worker_getdevspeed void *    voiddata,
float *    speed
 

worker thread calls this to get relative speed of this device as determined by the SM/core count and clock rate

Definition at line 1202 of file WKFThreads.C.

int wkf_threadpool_worker_getid void *    voiddata,
int *    threadid,
int *    threadcount
 

worker thread can call this to get its ID and number of peers

Definition at line 1163 of file WKFThreads.C.

Referenced by cudaorbitalthread, openclorbitalthread, rdf_thread, vmd_cuda_devpool_clear_device_mem, vmd_cuda_devpool_setdevice, vmddevpoolcudalatencythread, vmddevpoolcudatilelatencythread, and vmddevpooltilelatencythread.

int wkf_threadpool_worker_setdevspeed void *    voiddata,
float    speed
 

worker thread calls this to set relative speed of this device as determined by the SM/core count and clock rate Note: this should only be called once, during the worker's device initialization process

Definition at line 1191 of file WKFThreads.C.

Referenced by vmd_cuda_devpool_setdevice.

int wkf_tilestack_compact wkf_tilestack_t  
 

shrink memory buffers associated with task tile stack if possible

Definition at line 790 of file WKFThreads.C.

void wkf_tilestack_destroy wkf_tilestack_t  
 

destroy task tile stack

Definition at line 781 of file WKFThreads.C.

Referenced by wkf_threadpool_destroy.

int wkf_tilestack_empty wkf_tilestack_t  
 

query if the task tile stack is empty or not

Definition at line 881 of file WKFThreads.C.

int wkf_tilestack_init wkf_tilestack_t   s,
int    size
 

initialize task tile stack (to empty)

Definition at line 758 of file WKFThreads.C.

Referenced by wkf_threadpool_create.

int wkf_tilestack_pop wkf_tilestack_t  ,
wkf_tasktile_t  
 

pop a task tile off of the stack

Definition at line 843 of file WKFThreads.C.

Referenced by wkf_threadpool_next_tile.

int wkf_tilestack_popall wkf_tilestack_t  
 

pop all of the task tiles off of the stack

Definition at line 866 of file WKFThreads.C.

int wkf_tilestack_push wkf_tilestack_t  ,
const wkf_tasktile_t  
 

push a task tile onto the stack

Definition at line 814 of file WKFThreads.C.

Referenced by wkf_threadpool_tile_failed.


Variable Documentation

void*(*)(void *) wkf_thread_run_barrier(wkf_run_barrier_t *barrier, void * fctn(void*), void * parms, void **rsltparms)
 

sleeping barrier synchronization for thread pool

Definition at line 211 of file WKFThreads.h.


Generated on Sat May 26 01:48:56 2012 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002