Job Queue
current-worker
job-queue?
make-job-queue
submit-job!
stop-job-queue!
8.12

Job Queue🔗ℹ

Jay McCarthy <jay@racket-lang.org>

A multi-threaded job queue.

 (require job-queue) package: job-queue-lib

value

current-worker

 : (parameter/c (or/c false/c exact-nonnegative-integer?))

An identifier for the current worker, or #f outside a manager.

procedure

(job-queue? v)  boolean?

  v : any/c

Returns true if v is a job queue.

procedure

(make-job-queue how-many-workers)  job-queue?

  how-many-workers : exact-nonnegative-integer?

Starts a queue with how-many-workers threads servicing jobs.

procedure

(submit-job! jq job)  void

  jq : job-queue?
  job : (-> any)

Runs job by one of jq’s workers. job is run in the same parameterization as the call to submit-job!. This call will never block.

procedure

(stop-job-queue! jq)  void

  jq : job-queue?

Blocks until all of jq’s current jobs are finished and its workers are dead. Once stop-job-queue! has been called, jq will reject subsequent requests and submit-job! will block indefinitely.