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

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

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

11 ответов

59 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта