Skip to content

API Overview

FastQueue provides a layered API:

Headers

HeaderDescription
fastqueue/fastqueue.hMaster include (includes everything)
fastqueue/thread_pool.hHigh-level thread pool API
fastqueue/scheduler.hLow-level scheduler API
fastqueue/queue.hThread-safe queue
fastqueue/future.hFutures and promises
fastqueue/task.hTask creation and management
fastqueue/memory.hCustom allocator support
fastqueue/errors.hError codes and messages
fastqueue/config.hConfiguration constants
fastqueue/version.hVersion information
fastqueue/atomic.hAtomic operations
fastqueue/platform.hPlatform abstraction
fastqueue/parallel.hParallel for-loop utility
fastqueue/time.hTime and timer utilities
fastqueue/types.hType definitions

Naming Conventions

  • All public symbols prefixed with fq_
  • Types: fq_<name>_t
  • Functions: fq_<module>_<action>
  • Enums: fq_<name>_t with FQ_<NAME>_<VALUE>
  • Constants: FQ_<NAME>

Error Handling

All functions return fq_status_t:

c
fq_status_t st = fq_thread_pool_create_ex(&pool, 4);
if (st != FQ_OK) {
    fprintf(stderr, "Error: %s\n", fq_status_string(st));
    return 1;
}

Quick Reference

Thread Pool

c
fq_thread_pool_create_ex(&pool, threads);
fq_thread_pool_submit_fn(pool, fn, data);
fq_thread_pool_wait_idle(pool);
fq_thread_pool_shutdown(pool);

Scheduler

c
fq_scheduler_create(&scheduler, &cfg);
fq_scheduler_submit_fn(scheduler, fn, data);
fq_scheduler_wait_idle(scheduler);
fq_scheduler_shutdown(scheduler);

Future

c
fq_future_create(&future, allocator);
fq_future_wait(future);
fq_future_destroy(future);

Queue

c
fq_queue_create(&queue, capacity, allocator);
fq_queue_push(queue, task);
fq_queue_pop(queue, &task);
fq_queue_destroy(queue);

Parallel For

c
fq_thread_pool_parallel_for(pool, 0, N, fn, ctx);
fq_scheduler_parallel_for(scheduler, 0, N, fn, ctx);

Time

c
int64_t now = fq_time_now_ns();
fq_timer_start(&timer);
int64_t elapsed = fq_timer_elapsed_ns(&timer);

Released under the MIT License.