All Projects → fukamachi → legion

fukamachi / legion

Licence: BSD-3-Clause license
Simple multithreading worker mechanism.

Programming Languages

common lisp
692 projects

Legion

Build Status Coverage Status

Jesus asked him, "What is your name?" And he said, "My name is Legion, for we are many." ── Gospel of Mark chapter 5, verse 9

Usage

Worker

(defparameter *worker*
  (make-worker
    (lambda (job)
      (format t "Processed: ~S~%" job))))

(start *worker*)

(add-job *worker* 10)
(add-job *worker* "Hi")

(stop *worker*)

Cluster

(defparameter *cluster*
  (make-cluster 4
    (lambda (job)
      (format t "Processed: ~S~%" job))))

(start *cluster*)

(add-job *cluster* 10)
(add-job *cluster* "Hi")

(stop *cluster*)

NOTE: Cluster doesn't guarantee the order of processing jobs.

Functions

[Class] worker

Base class of workers.

You can specify the value by specifying :queue.

[Function] (worker-status worker)

Return the worker's status which is specifically one of :running, :idle, :shutting and :shutdown.

[Function] (worker-queue-count worker)

Return the number of outstanding jobs of the worker.

[Method] (start worker-or-cluster)

Start the given worker or cluster to process jobs.

[Method] (stop worker-or-cluster)

Stop the given worker or cluster after processing its queued jobs.

[Method] (kill worker-or-cluster)

Stop the given worker or cluster immediately (outstanding jobs will be remained in its queue).

[Method] (add-job worker-or-cluster val)

Enqueue a new job val which will be passed to a function specified for make-worker.

[Method] (fetch-job worker) => val, existsp

Dequeue a job from worker's queue.

[Class] cluster

Base class of clusters.

[Function] (cluster-status cluster)

Return the cluster's status which is one of :running, :shutting and :shutdown.

[Function] (start-cluster cluster)

Start workers of cluster.

[Function] (cluster-workers cluster) => workers-array

Return workers of cluster in simple-array.

Author

Copyright

Copyright (c) 2015 Eitaro Fukamachi ([email protected])

License

Licensed under the BSD 3-Clause License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].