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

Можете рассказать пожалуйста как реализуется асинхронность на уровне инструкций?

На уровне питонов, библиотек плюсов я понимаю, но вот как это под капотом выглядит? Совсем не понимаю. Может статьи какие-то есть, или хотябы видео.

11 ответов

62 просмотра

Если я правильно понял вопрос - никак. Асинхронности на уровне процессора не существует, но существуют потоки, которые работают независимо друг от друга. Именно на основе этого и реализуют асинхронность

2happy- Автор вопроса
Aleksandr
Если я правильно понял вопрос - никак. Асинхроннос...

Я понимаю, что напрямую async инструкций нет, но в итоге высокоуровневый код собирается в инструкции, которые вместе работают асинхронно. Наверное правильнее сформулировать - как устроены события. Как можно ожидать какое-то событие не блокируя весь поток.

2happy
Я понимаю, что напрямую async инструкций нет, но в...

Нет, просто когда нужно чего-то подождать, состояние функции сохраняется, а управление передаётся в диспетчер (event loop). Когда условие ожидания выполнено, диспетчер организует продолжение выполнения функции.

2happy
Я понимаю, что напрямую async инструкций нет, но в...

Это вопрос к конкретной реализации. Это могут быть полноценные отдельные потоки ОС или это некая внутренняя легковесная реализация внутри одного потока силами среды исполнения или компилятора, работающая например по таймеру.

s54820
Нет, просто когда нужно чего-то подождать, состоян...

Ну в .NETе этим похоже что занимаетмя CLR, сохраняя состояние прерванного кода куда нибудь

2happy- Автор вопроса
s54820
Нет, просто когда нужно чего-то подождать, состоян...

То есть на примере с сокетами в *nix я могу создать сокет, он сделает что-то, и сохранится в определенном состоянии. Потом приходит физический сигнал, и он вызывает функцию, которая возобновляет работу с сокетом и этим я получаю то, что мог что-то делать пока сокет ожидал ввод?

2happy
То есть на примере с сокетами в *nix я могу создат...

Тут вопрос "где ты мог что-то делать". Ты можешь вот с обычными сокетами создать сокет неблокирующий, сказать ему "отправляй" и что-то делать, пока оно там отправляется. А когда тебе нужен будет результат отправки, ты, конечно заблокируешься, если ещё не отправилось. Но в этот момент ты можешь не тупо висеть, а решить поделать что-то ещё.

2happy- Автор вопроса
s54820
Тут вопрос "где ты мог что-то делать". Ты можешь в...

я что-то не понимаю, а вопрос нормальный задать не могу. Пойду завтра что-то почитаю (если скиньте что-то, то буду благодарен), попробую скопировать, разобрать асинхронный код с си сокетами, тогда спрошу

2happy- Автор вопроса
s54820
Тут вопрос "где ты мог что-то делать". Ты можешь в...

ну, это вроде понятно, но я хотел 💥чего нибудь💥, а не совсем это

2happy
Я понимаю, что напрямую async инструкций нет, но в...

Создаются нити, которые диспетчеризуются с поправкой на конкретный язык *в питон уже асинк завезли что ли?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта