Привет.
Есть nodejs. У него внутри все основано на event loop. В частности при parse или stringify JSON нода это делает синхронно и забивает event loop пока не доделает его. Даже если вынести в другой поток работу с json, event loop все равно будет забит, когда в основной поток будет отдаваться результат и конструироваться объект.
Теперь касательно go. Имеет ли он такую же проблему при парсинге json ?
Или он не построен на event loop (libuv или что-то еще) ?
Java (и другие языки, где нет в ядре eventloop, типа C++, C#) могут парсить в отдельном потоке и просто передать в основной поток легковесную ссылку на готовый объект, что сокращает все расходы взаимодействия почти до нуля.
Максимально тупой пример:
Если в жс ты в разных промисах будешь жсон парсить, луп заблочится, то есть промисы асинхронны но однопоточность никуда не делась
2 жсон на каждый по 1 сек. Как ни крути результат будет за 2 сек (если всякие node-cluster не юзать)
В Го горутины считай как промисы в жс, только горутины помимо асинхронности еще и у каждой свой «поток», то есть можешь парсить конкурентно хоть 100 жсон, они будут парситься одновременно
100 жсон на каждый по 1 сек. Результат будет ~1 сек