Pull to refresh

Comments 10

Но отдельной реализации очереди в стандартной библиотеке нет.

Каналы (буферизированные) вполне себе очереди. Особенно когда речь идет о взаимодействии двух горутин.

Да. Но каналы имеют фиксированный размер. Если в очередь пишет и читает 1 goрутина, как в алгоритме обхода дерева в ширину, например, то появляется возможность deadlock'а. Так что простые очереди тоже нужны.

Из канала можно читать и без блокирования + еще можно легко реализовать таймаут через time.After().

Но согласен — использовать каналы в одной горутине — довольно бессмысленно и порой опасно.

Однако мой коммент был не про универсальность каналов для всех применений, он был о том, что не стоит так категорично заявлять что очередей нет. Такое вот прочитает новичок и начнет все эти навороты пользовать там где канала — за глаза и за уши хватает.
Тут как на кухне: есть несколько ножей, каждый для своих задач.
Небольшим ножом для тонкой разделки овощей, большие куски говядины же порционно на стейки нарезать же не будешь? Не будешь.
UFO just landed and posted this here
Справедливости ради, впервые collections framework появился в jdk 1.2 — конец 1998 года, когда джаве было почти три года. В красивом виде, с дженериками и concurrency-коллекциями — в J2SE 5.0, 2004 год (джаве — 8 лет). Go вышел в 2012 — ему 7 лет. Почему бы немного не посравнивать?
Неужели концепция языка изменится, и язык вместе со стандартной библиотекой станут дружелюбными к разработчику?
По сути, сейчас не получится написать типобезопасные обобщенные структуры данных из-за отсутствия в языке дженериков. Когда они в языке появятся, тогда, я думаю, нас ждут интересные времена :)

Довольно забавно сравнивать одну только стандартную библиотеку с++ с кучей разрозненных репозиториев на github. Давайте тогда ещё boost и abseil в сравнение включим

Sign up to leave a comment.

Articles