initial commit
This commit is contained in:
65
common/threadpool/threadpool.h
Executable file
65
common/threadpool/threadpool.h
Executable file
@@ -0,0 +1,65 @@
|
||||
#ifndef _THREADPOOL_H_
|
||||
#define _THREADPOOL_H_
|
||||
#include "kpacket.h"
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
typedef void *(*thread_routine)(void *param);
|
||||
|
||||
/**
|
||||
* @file threadpool.h
|
||||
* @brief Threadpool Header File
|
||||
*/
|
||||
|
||||
/**
|
||||
* Increase this constants at your own risk
|
||||
* Large values might slow down your system
|
||||
*/
|
||||
#define MAX_THREADS 16
|
||||
|
||||
typedef struct threadpool_s threadpool;
|
||||
|
||||
/**
|
||||
* @function threadpool_create
|
||||
* @brief Creates a threadpool object.
|
||||
* @param thread_count Number of worker threads.
|
||||
* @param queue_size Size of the queue(routine) for threadpool.
|
||||
* @return a newly created thread pool or NULL
|
||||
*/
|
||||
threadpool *threadpool_create(uint32_t max_thread_cnt);
|
||||
|
||||
/**
|
||||
* @function threadpool_add
|
||||
* @brief add a new task in the queue of a thread pool
|
||||
* @param pool Thread pool to which add the task.
|
||||
* @param function Pointer to the function that will perform the task.
|
||||
* @param packet Packet to be passed to the function.
|
||||
* @return 0 if all goes well, negative values in case of error (@see
|
||||
* threadpool_error_t for codes).
|
||||
*/
|
||||
uint32_t threadpool_add(threadpool *pool, thread_routine routine, kpacket *packet);
|
||||
|
||||
|
||||
//delete a routine
|
||||
uint32_t threadpool_del(threadpool *pool, thread_routine routine);
|
||||
|
||||
/**
|
||||
* @function threadpool_destroy
|
||||
* @brief Stops and destroys a thread pool.
|
||||
* @param pool Thread pool to destroy.
|
||||
*
|
||||
* Known values for flags are 0 (default) and threadpool_graceful in
|
||||
* which case the thread pool doesn't accept any new tasks but
|
||||
* processes all pending tasks before shutdown.
|
||||
*/
|
||||
uint32_t threadpool_destroy(threadpool *pool);
|
||||
|
||||
void threadpool_dump(threadpool *pool);
|
||||
|
||||
void threadpool_test();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _THREADPOOL_H_ */
|
||||
Reference in New Issue
Block a user