Provided by: libcoin80-doc_3.1.4~abc9f50-4ubuntu2_all bug

NAME

       wpool.h -

SYNOPSIS

       #include <Inventor/C/basic.h>
       #include <Inventor/C/threads/common.h>

   Typedefs
       typedef void cc_wpool_f (void *)

   Functions
       cc_wpool * cc_wpool_construct (int numworkers)
       void cc_wpool_destruct (cc_wpool *pool)
       int cc_wpool_get_num_workers (cc_wpool *pool)
       void cc_wpool_set_num_workers (cc_wpool *pool, int newnum)
       void cc_wpool_wait_all (cc_wpool *pool)
       SbBool cc_wpool_try_begin (cc_wpool *pool, int numworkersneeded)
       void cc_wpool_begin (cc_wpool *pool, int numworkersneeded)
       void cc_wpool_start_worker (cc_wpool *pool, cc_wpool_f *workfunc, void *closure)
       void cc_wpool_end (cc_wpool *pool)

Function Documentation

   cc_wpool* cc_wpool_construct (intnumworkers)
       Construct worker pool.

   void cc_wpool_destruct (cc_wpool *pool)
       Destruct worker pool. Will wait for all jobs in progress to finish

   int cc_wpool_get_num_workers (cc_wpool *pool)
       Returns the number of workers in the pool.

   void cc_wpool_set_num_workers (cc_wpool *pool, intnewnum)
       Sets the number of workers in the pool.

   void cc_wpool_wait_all (cc_wpool *pool)
       Wait for all pool workers to finish working and go into idle state. This method should
       only be called by the thread controlling the pool. A pool worker should not call this
       method, since it will obviously never return from here (it will never go idle).

   SbBool cc_wpool_try_begin (cc_wpool *pool, intnumworkersneeded)
       Locks the pool so that workers can be started using the cc_wpool_start_worker() method.
       numworkersneeded should contain the minumum number of workers that is needed. If  workers
       are available, the pool will be locked and TRUE is returned. Otherwise FALSE is returned.

       Usage pseudocode:

       int numworkers = 5;

       if (cc_wpool_begin(pool, numworkers)) {
         for (int i = 0; i < numworkers; i++) {
           cc_wpool_start_worker(my_work[i], my_closure[i]);
         }
         cc_wpool_end(pool);
       }

       Important! If too few workers are available, the pool will not be locked and
       cc_wpool_end() should not be called.

       See Also:
           cc_wpool_start_worker(), cc_wpool_end()

   void cc_wpool_begin (cc_wpool *pool, intnumworkersneeded)
       Wait for numworkersneeded workers to become idle. When returning from this call, the pool
       will be locked, and up to numworkersneeded can be started using the
       cc_wpool_start_worker() method. Remember to call cc_wpool_end() to unlock the pool again.

       See Also:
           cc_wpool_try_begin()

   void cc_wpool_start_worker (cc_wpool *pool, cc_wpool_f *workfunc, void *closure)
       Starts a worker. The pool must be locked (using cc_wpool_begin()) before calling this
       method.

       See Also:
           cc_wpool_begin() , cc_wpool_end()

   void cc_wpool_end (cc_wpool *pool)
       Unlocks the pool after a cc_wpool_begin(), cc_wpool_start_worker() sequence.

       Please note that if cc_wpool_begin() returns 0, you should not call cc_wpool_end().

       See Also:
           cc_wpool_begin(), cc_wpool_start_worker()

Author

       Generated automatically by Doxygen for Coin from the source code.