170 похожих чатов

Господа, есть теоритический вопрос. Про горутины и вообще конкаренси. Не

могу понять как это работает. Тут вопрос больше к тем, кто на жс писал. Можно ли представить горутину, как промис в жс? То есть я делаю, например, запрос в апишку какую-нибудь в горутине, она в фоне от основного потока будет делаться, а когда выполнится, вернёт результат. Вот если у меня процессор с одним ядром, каким образом горутина работает? А если у меня 4 ядра? Отдельное ядро будет заниматься исполнением кода горутины? Но это же всё, по идее, блокирующие вещи? Запись в бд, скажем. А я запустил 100 горутин. Короче, вообще что-то не могу найти простого объяснения, как и где исполняются горутины. Конкаренси - не параллелизм. Но они же параллельно работают! Или как-то распредеяется процессорное время так, что это выглядит как параллелизм. Ууух... половина ответа это правильно заданный вопрос, но блин... :) Поймите правильно, фронтендер пытается в бэк на не_джаваскрипте ))

13 ответов

33 просмотра

для начала у Go есть шедуллер и он делает красиво M горутин на N системных тредов, которые задаются GOMAXPROC

🎹Alex-Sazonov Автор вопроса
c
для начала у Go есть шедуллер и он делает красиво...

Ок, можно ли сказать, что конкаренси в го, это как асинхронность в жс?

Может делаться в другом потоке, может в том же, все это скрыто реализацией, и разработчик не должен об этом париться, и его код должен работать в любом случае.

🎹Alex Sazonov
Ок, можно ли сказать, что конкаренси в го, это как...

Нет нельзя. В JS обработка промисов происходит последовательно друг за другом

Anton Kucherov
Нет нельзя. В JS обработка промисов происходит пос...

Промисы — это не совсем про асинхронность

Constantine
Промисы — это не совсем про асинхронность

Так и...? 🤔 Вопрос был: Можно ли горутину представить как промис. Нет нельзя.

🎹Alex Sazonov
А про что тогда?

Я думаю, уместнее было бы говорить об event loop в целом, если речь о канкаренси

Constantine
Я думаю, уместнее было бы говорить об event loop в...

Так там нет канкаренси. В JS на сколько я помню асинхронные функции кладутся в очередь и как только стек вызовов пустеет, по очереди начинают исполнятся друг за другом.

🎹Alex Sazonov
Ок, можно ли сказать, что конкаренси в го, это как...

жс работает в одном потоке параллельно код в жс не исполняется, там стоит шедуллер который переключается между тасками и event loop который напрямую связан с IO начали делать сетевой запрос — поток не блокируется, вместо этого исполняется код из другого промиса, если такие есть в очереди в Go же шедуллер может разные таски шедулить на разные потоки Почитать подробно можно у Ardan Labs: https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html

🎹Alex-Sazonov Автор вопроса
Constantine
Я думаю, уместнее было бы говорить об event loop в...

Ну как я понял, если представить, что у меня одно ядро, то горутина ведёт себя как промис примерно. То есть уходит в сторону и делит ресурсы процессора с основной горутиной. Так?

🎹Alex Sazonov
Ну как я понял, если представить, что у меня одно ...

Они тебя путают. Считай, что все в одном потоке. Диспетчеризация по вводу выводу. Как приятная фишка - отдельный тред для блокирующих операций. Как еще одна фишка - вытесняющая диспетчеризация в последней версии.

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта