Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
pool.c File Reference
#include "../common/allocations.h"
#include "zstd_deps.h"
#include "debug.h"
#include "pool.h"

Data Structures

struct  POOL_ctx_s
 

Functions

POOL_ctxPOOL_create (size_t numThreads, size_t queueSize)
 
POOL_ctxPOOL_create_advanced (size_t numThreads, size_t queueSize, ZSTD_customMem customMem)
 
void POOL_free (POOL_ctx *ctx)
 
void POOL_joinJobs (POOL_ctx *ctx)
 
int POOL_resize (POOL_ctx *ctx, size_t numThreads)
 
void POOL_add (POOL_ctx *ctx, POOL_function function, void *opaque)
 
int POOL_tryAdd (POOL_ctx *ctx, POOL_function function, void *opaque)
 
size_t POOL_sizeof (const POOL_ctx *ctx)
 

Function Documentation

◆ POOL_add()

void POOL_add ( POOL_ctx * ctx,
POOL_function function,
void * opaque )

POOL_add() : Add the job function(opaque) to the thread pool. ctx must be valid. Possibly blocks until there is room in the queue. Note : The function may be executed asynchronously, therefore, opaque must live until function has been completed.

◆ POOL_create()

POOL_ctx * POOL_create ( size_t numThreads,
size_t queueSize )

POOL_create() : Create a thread pool with at most numThreads threads. numThreads must be at least 1. The maximum number of queued jobs before blocking is queueSize.

Returns
: POOL_ctx pointer on success, else NULL.

◆ POOL_create_advanced()

POOL_ctx * POOL_create_advanced ( size_t numThreads,
size_t queueSize,
ZSTD_customMem customMem )

◆ POOL_free()

void POOL_free ( POOL_ctx * ctx)

POOL_free() : Free a thread pool returned by POOL_create().

◆ POOL_joinJobs()

void POOL_joinJobs ( POOL_ctx * ctx)

POOL_joinJobs() : Waits for all queued jobs to finish executing.

◆ POOL_resize()

int POOL_resize ( POOL_ctx * ctx,
size_t numThreads )

POOL_resize() : Expands or shrinks pool's number of threads. This is more efficient than releasing + creating a new context, since it tries to preserve and re-use existing threads. numThreads must be at least 1.

Returns
: 0 when resize was successful, !0 (typically 1) if there is an error. note : only numThreads can be resized, queueSize remains unchanged.

◆ POOL_sizeof()

size_t POOL_sizeof ( const POOL_ctx * ctx)

POOL_sizeof() :

Returns
threadpool memory usage note : compatible with NULL (returns 0 in this case)

◆ POOL_tryAdd()

int POOL_tryAdd ( POOL_ctx * ctx,
POOL_function function,
void * opaque )

POOL_tryAdd() : Add the job function(opaque) to thread pool if a queue slot is available. Returns immediately even if not (does not block).

Returns
: 1 if successful, 0 if not.