Должны ли закрываться каналы core.async, когда они больше не используются?
Метод close (по крайней мере, в мире Java) - это то, что вы, как добропорядочный гражданин, должны вызывать, когда вы закончите, используя связанный ресурс. Каким-то образом я автоматически начал применять то же самое для закрытия! функция из библиотеки core.async. Насколько я понимаю, эти каналы не привязаны к какому-либо вводу-выводу, и поэтому я не уверен, нужно ли звонить близко! Можно ли оставлять каналы (локальные) для сборки мусора, не закрывая их?
1 ответ
Можно оставить их сборщику мусора, если их закрытие не имеет смысла в вашей программе. Распространено закрывать их как сигнал другим компонентам, что пришло время закрыть себя. Другие каналы предназначены для вечного использования и никогда не должны закрываться или собирать мусор. В других случаях канал используется для передачи одного значения потребителю, а затем и производитель, и потребитель заканчивают работу, и канал является GC'd. В этом последнем случае нет необходимости закрывать их.