This is a simple experiment to test the concurrent processing using clojure.core.async channel.
+-----------+ +-------> | Processor | +------+ | +-----------+ | | +-----------+ | +-------> | Processor | +------+ +----------+ | +-----------+ | +----------+ | Producer | +----------------+ | +-----------+ | +----------------+ | Consumer | | | ---> | input channel | +----------> | Processor | +---------> | output channel | ---> | | +----------+ +----------------+ | +-----------+ | +----------------+ +----------+ | +-----------+ | +-------> | Processor | +------+ | +-----------+ | | +-----------+ | +-------> | Processor | +------+ +-----------+
$ lein repl
$ (-main [number_of_thread] [number_of_item_to_be_processed])