Ответ 1
Невозможно сделать это в глобальном масштабе, о котором я знаю. Один из способов - использовать канал управления, который можно использовать для отключения любого цикла. pub/sub может работать хорошо для глобального канала управления.
все, когда я использую core.async из блока repl, вы уйдете от меня, потому что я потеряю канал, который используется для его остановки, потому что я перезаряжаю пространство имен. Например, если я запустил это из repl:
(go (when (not= c (second (async/alts! [c (async/timeout 1000)])))
(println "hello")))
а затем я перезагружаю пространство имен, а c теряется. Теперь у меня есть "привет", спам мой REPL до конца времени. Если бы я мог закрыть все каналы или убить все блоки go, это избавит меня от перезагрузки моего REPL.
Невозможно сделать это в глобальном масштабе, о котором я знаю. Один из способов - использовать канал управления, который можно использовать для отключения любого цикла. pub/sub может работать хорошо для глобального канала управления.