Преимущества интеграции epoll - PullRequest
0 голосов
/ 11 ноября 2019

На одном собеседовании я должен был ответить на этот вопрос - какие преимущества у вас есть благодаря использованию интеграции / реализации epoll в Go.

Я просто знаю, что может сделать epoll, и что сложность для любого количества дескрипторовO (1), но понятия не имею, почему Go лучше, чем другие языки.

Я нашел эту ветку https://news.ycombinator.com/item?id=15624586, и парень сказал, что причина, возможно, в том, что Go не использует переключение стека. Это трудно понять для меня. Какая часть программы не использует переключение стека? У каждой горутины свой стек.

1 Ответ

2 голосов
/ 12 ноября 2019

Это не интеграция с netpoller как таковая , которая делает Go сильным в своей области - это скорее способ интеграции: вместо того, чтобы быть прикрепленным к библиотеке, в Go, netpoller тесноинтегрирован прямо в среду выполнения и планировщик (который решает, какую и какую программу запускать и когда).

Соединение сверхлегких потоков выполнения - подпрограмм - с netpoller позволяет callback-свободное программирование. То есть, как только ваша служба подключится к другому клиенту, вы просто передаете это соединение групповой программе, которая просто читает данные из нее (и записывает в нее свой поток ответов). Как только данные недоступны, когда программа хочет их прочитать, планировщик приостанавливает работу программы и разблокирует ее, как только netpoller сообщает о наличии данных;то же самое происходит, когда программа хочет записать данные, но буфер отправки полон.

Напомним, что netpoller в Go переплетен с планировщиком goroutine, который позволяет goroutines прозрачно ожидать доступности данных, не требуя от программиста явногозакодируйте цикл событий и обратные вызовы или разберитесь с «фьючерсами» и «обещаниями», которые являются простыми обратными вызовами, завернутыми в красивые объекты.

Я приглашаю вас прочитать это классическое эссе , которое объясняет этот материал с помощьюмного красивых слов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...