LDK_JOBS_DEFAULT_WORKER_COUNT
#define LDK_JOBS_DEFAULT_WORKER_COUNT 4u
Shared worker job module
#define LDK_JOBS_DEFAULT_WORKER_COUNT 4u
typedef struct LDKJobs{
void *internal;
bool is_initialized;
}LDKJobs;
typedef struct LDKAsyncResultState LDKAsyncResultState;
typedef struct LDKAsyncResult{
LDKAsyncResultState *state;
}LDKAsyncResult;
Callback executed as a job by the work scheduler.
typedef bool(*LDKJobFunc)(void *user_data);
user_dataTrue if the operation succeeds; false otherwise.
typedef enum LDKAsyncStatus{
LDK_ASYNC_STATUS_INVALID=0,
LDK_ASYNC_STATUS_PENDING,
LDK_ASYNC_STATUS_RUNNING,
LDK_ASYNC_STATUS_SUCCEEDED,
LDK_ASYNC_STATUS_FAILED,
}LDKAsyncStatus;
Initialize the jobs.
LDK_API bool ldk_jobs_initialize(
LDKJobs *jobs,
u32 worker_count
);
LDKJobs *jobsu32 worker_countTrue if the operation succeeds; false otherwise.
Shut down the jobs.
LDK_API void ldk_jobs_terminate(LDKJobs *jobs);
LDKJobs *jobsShut down the job system and collect termination diagnostics.
LDK_API void ldk_jobs_terminate_with_diagnostics(
LDKJobs *jobs,
XThreadPoolShutdownCallback callback,
void *user_data
);
LDKJobs *jobsXThreadPoolShutdownCallback callbackvoid *user_dataSubmit work to the job pool and obtain an asynchronous result.
LDK_API LDKAsyncResult ldk_jobs_submit(
LDKJobs *jobs,
LDKJobFunc function,
void *user_data
);
LDKJobs *jobsLDKJobFunc functionvoid *user_dataAsynchronous result for tracking job completion.
Check whether the async result is valid.
LDK_API bool ldk_async_result_is_valid(LDKAsyncResult result);
LDKAsyncResult resultTrue when the queried condition holds; false otherwise.
Check whether an asynchronous job has completed.
LDK_API bool ldk_async_result_is_done(LDKAsyncResult result);
LDKAsyncResult resultTrue when the queried condition holds; false otherwise.
Read the completion status of an asynchronous job.
LDK_API LDKAsyncStatus ldk_async_result_status(LDKAsyncResult result);
LDKAsyncResult resultThe requested value.
Wait for an asynchronous job to complete.
LDK_API bool ldk_async_result_wait(LDKAsyncResult result);
LDKAsyncResult resultTrue if the operation succeeds; false otherwise.
Release resources associated with an asynchronous result.
LDK_API void ldk_async_result_release(LDKAsyncResult *result);
LDKAsyncResult *result