📄 threadpool.h
字号:
/**************************************************************************** * Function: ThreadPoolAddPersistent * * Description: * Adds a persistent job to the thread pool. * Job will be run as soon as possible. * Call will block until job is scheduled. * Parameters: * tp - valid thread pool pointer * ThreadPoolJob - valid thread pool job with the following fields: * * func - ThreadFunction to run * arg - argument to function. * priority - priority of job. * * Returns: * 0 on success, nonzero on failure * EOUTOFMEM not enough memory to add job. * EMAXTHREADS not enough threads to add persistent job. *****************************************************************************/int ThreadPoolAddPersistent (ThreadPool*tp, ThreadPoolJob *job, int *jobId);/**************************************************************************** * Function: ThreadPoolGetAttr * * Description: * Gets the current set of attributes * associated with the thread pool. * Parameters: * tp - valid thread pool pointer * out - non null pointer to store attributes * Returns: * 0 on success, nonzero on failure * Always returns 0. *****************************************************************************/int ThreadPoolGetAttr(ThreadPool *tp, ThreadPoolAttr *out);/**************************************************************************** * Function: ThreadPoolSetAttr * * Description: * Sets the attributes for the thread pool. * Only affects future calculations. * Parameters: * tp - valid thread pool pointer * attr - pointer to attributes, null sets attributes to default. * Returns: * 0 on success, nonzero on failure * Returns INVALID_POLICY if policy can not be set. *****************************************************************************/int ThreadPoolSetAttr(ThreadPool *tp, ThreadPoolAttr *attr);/**************************************************************************** * Function: ThreadPoolAdd * * Description: * Adds a job to the thread pool. * Job will be run as soon as possible. * Parameters: * tp - valid thread pool pointer * func - ThreadFunction to run * arg - argument to function. * priority - priority of job. * poolid - id of job * free_function - function to use when freeing argument * Returns: * 0 on success, nonzero on failure * EOUTOFMEM if not enough memory to add job. *****************************************************************************/int ThreadPoolAdd (ThreadPool*tp, ThreadPoolJob *job, int *jobId);/**************************************************************************** * Function: ThreadPoolRemove * * Description: * Removes a job from the thread pool. * Can only remove jobs which are not * currently running. * Parameters: * tp - valid thread pool pointer * jobid - id of job * out - space for removed job. * Returns: * 0 on success, nonzero on failure. * INVALID_JOB_ID if job not found. *****************************************************************************/int ThreadPoolRemove(ThreadPool *tp, int jobId, ThreadPoolJob *out);/**************************************************************************** * Function: ThreadPoolShutdown * * Description: * Shuts the thread pool down. * Waits for all threads to finish. * May block indefinitely if jobs do not * exit. * Parameters: * tp - must be valid tp * Returns: * 0 on success, nonzero on failure * Always returns 0. *****************************************************************************/int ThreadPoolShutdown(ThreadPool *tp);/**************************************************************************** * Function: TPJobInit * * Description: * Initializes thread pool job. * Sets the priority to default defined in ThreadPool.h. * Sets the free_routine to default defined in ThreadPool.h * Parameters: * ThreadPoolJob *job - must be valid thread pool attributes. * start_routine func - function to run, must be valid * void * arg - argument to pass to function. * Returns: * Always returns 0. *****************************************************************************/int TPJobInit(ThreadPoolJob *job, start_routine func, void *arg);/**************************************************************************** * Function: TPJobSetPriority * * Description: * Sets the max threads for the thread pool attributes. * Parameters: * attr - must be valid thread pool attributes. * maxThreads - value to set * Returns: * Always returns 0. *****************************************************************************/int TPJobSetPriority(ThreadPoolJob *job, ThreadPriority priority);/**************************************************************************** * Function: TPJobSetFreeFunction * * Description: * Sets the max threads for the thread pool attributes. * Parameters: * attr - must be valid thread pool attributes. * maxThreads - value to set * Returns: * Always returns 0. *****************************************************************************/int TPJobSetFreeFunction(ThreadPoolJob *job, free_routine func);/**************************************************************************** * Function: TPAttrInit * * Description: * Initializes thread pool attributes. * Sets values to defaults defined in ThreadPool.h. * Parameters: * attr - must be valid thread pool attributes. * Returns: * Always returns 0. *****************************************************************************/int TPAttrInit(ThreadPoolAttr *attr);/**************************************************************************** * Function: TPAttrSetMaxThreads * * Description: * Sets the max threads for the thread pool attributes. * Parameters: * attr - must be valid thread pool attributes. * maxThreads - value to set * Returns: * Always returns 0. *****************************************************************************/int TPAttrSetMaxThreads(ThreadPoolAttr *attr, int maxThreads);/**************************************************************************** * Function: TPAttrSetMinThreads * * Description: * Sets the min threads for the thread pool attributes. * Parameters: * attr - must be valid thread pool attributes. * minThreads - value to set * Returns: * Always returns 0. *****************************************************************************/int TPAttrSetMinThreads(ThreadPoolAttr *attr, int minThreads);/**************************************************************************** * Function: TPAttrSetIdleTime * * Description: * Sets the idle time for the thread pool attributes. * Parameters: * attr - must be valid thread pool attributes. * Returns: * Always returns 0. *****************************************************************************/int TPAttrSetIdleTime(ThreadPoolAttr *attr, int idleTime);/**************************************************************************** * Function: TPAttrSetJobsPerThread * * Description: * Sets the jobs per thread ratio * Parameters: * attr - must be valid thread pool attributes. * jobsPerThread - number of jobs per thread to maintain * Returns: * Always returns 0. *****************************************************************************/int TPAttrSetJobsPerThread(ThreadPoolAttr *attr, int jobsPerThread);/**************************************************************************** * Function: TPAttrSetStarvationTime * * Description: * Sets the starvation time for the thread pool attributes. * Parameters: * attr - must be valid thread pool attributes. * int starvationTime - milliseconds * Returns: * Always returns 0. *****************************************************************************/int TPAttrSetStarvationTime(ThreadPoolAttr *attr, int starvationTime);/**************************************************************************** * Function: TPAttrSetSchedPolicy * * Description: * Sets the scheduling policy for the thread pool attributes. * Parameters: * attr - must be valid thread pool attributes. * PolicyType schedPolicy - must be a valid policy type. * Returns: * Always returns 0. *****************************************************************************/int TPAttrSetSchedPolicy(ThreadPoolAttr *attr, PolicyType schedPolicy);/**************************************************************************** * Function: ThreadPoolGetStats * * Description: * Returns various statistics about the * thread pool. * Only valid if STATS has been defined. * Parameters: * ThreadPool *tp - valid initialized threadpool * ThreadPoolStats *stats - valid stats, out parameter * Returns: * Always returns 0. *****************************************************************************/STATSONLY( EXPORT int ThreadPoolGetStats(ThreadPool *tp, ThreadPoolStats *stats););STATSONLY(EXPORT void ThreadPoolPrintStats(ThreadPoolStats *stats););#ifdef __cplusplus}#endif#endif //ThreadPool
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -