Я разогреваюсь с Clojure и начал писать несколько простых функций.
Я понимаю, как язык явно подходит для параллельных вычислений, и это заставило меня задуматься.У меня есть приложение (написанное на Java, но неважно), которое работает следующим образом:
один поток ожидает ввода (файловая система в моем случае, но это может быть сеть иличто угодно) и помещает этот ввод, как только он поступает в очередь
несколько потребителей извлекают данные из этой очереди и обрабатывают данные параллельно
код, который помещает входные данные для параллельной обработки, может выглядеть следующим образом (это всего лишь пример):
asynchFetchInput( new MyCallBack() {
public void handle( Input input ) {
queue.put(input)
}
})
Где asynchFetchInput будет порождать поток и затем вызывать обратный вызов.
Это действительно просто пример, но если бы кто-то мог объяснить, как сделать нечто подобное с помощью Clojure, это очень помогло бы мне понять «большую картину».