Предпочитайте синхронные функции - функции, которые возвращают свои результаты напрямую, или завершают любые обратные вызовы или операции канала перед возвратом - вместо асинхронных.
Синхронные функции позволяют локализовать go-процедуры (goroutines) в вызове, что упрощает анализ их времени жизни и позволяет избежать утечек и скачков данных. Их также проще протестировать: вызывающий может передать вход и проверить выход без необходимости опроса или синхронизации.
Если вызывающим абонентам требуется больше конкурентности, они могут легко добавить ее, вызвав функцию из отдельной go-процедуры. Напротив, бывает довольно трудно - иногда невозможно - удалить ненужную конкурентность на вызывающей стороне.
Читайте также:
Комментариев нет:
Отправить комментарий