Size: a a a

2021 March 25

AB

Artur BAGArt in phpGeeks
Maxim Kainov
У ОС есть неблокирующие вызовы?
Они все неблоктрующте
источник

AB

Artur BAGArt in phpGeeks
Блокирующими их делает яп чтобы было удобнее человеку
источник

AB

Artur BAGArt in phpGeeks
Грубо говоря твой компьютер не висит пока страница грузится. Да и перемещение мыши не блокирует остальные процессы
источник

AB

Artur BAGArt in phpGeeks
Хотя именно этот процесс наблюдается а некоторых играх
источник

AB

Artur BAGArt in phpGeeks
В айти вообще много сделано для удобства человека(оператора программиста бухгалтера)
источник

V

Vladimir in phpGeeks
Artur BAGArt
Они все неблоктрующте
Ну там вроде что-то типа…ядро в спящее состояние отправляет процесс до окончания системного вызова
источник

M

Maxim Kainov in phpGeeks
Vladimir
Взял данные первого запроса, дал задание ОС на IO операцию (например, на получение данных из бд) и не дождаясь завершения этой операции взял данные другого запроса и начал их обраьатывать, т.е. можно конкуретно работать сразу с несколькими запросами, потому что IO операции неблокирующие, не заставляющие воркер ждать, простаивать, вместо простоя выполняется следующее действие.
Ну ладно, выполнил ты неблокирующий вызов к файлу или бд. Тебе же все равно нужно обработать результат.
источник

V

Vladimir in phpGeeks
Maxim Kainov
Ну ладно, выполнил ты неблокирующий вызов к файлу или бд. Тебе же все равно нужно обработать результат.
Да, но не ждать пока он придет
источник

V

Vladimir in phpGeeks
В это время ты следующий микротаск выполняешь
источник

AB

Artur BAGArt in phpGeeks
Maxim Kainov
Ну ладно, выполнил ты неблокирующий вызов к файлу или бд. Тебе же все равно нужно обработать результат.
А представь что тебе надо загрузить 10 страниц с чужого сайта
источник

A

Artyom in phpGeeks
Maxim Kainov
Ну ладно, выполнил ты неблокирующий вызов к файлу или бд. Тебе же все равно нужно обработать результат.
Дык как раз самое интересное в том, что обработка чаще всего занимает максимум 10-20% времени от общего ожидания.
источник

AB

Artur BAGArt in phpGeeks
Maxim Kainov
Ну ладно, выполнил ты неблокирующий вызов к файлу или бд. Тебе же все равно нужно обработать результат.
Каждый сайт отдает страницу по 5 секунд. А обработка 10миллисекунд. Итого последовательно обработать все 10 страниц займет 50секунд
источник

AB

Artur BAGArt in phpGeeks
А параллельная всего 5
источник

AB

Artur BAGArt in phpGeeks
А представь что ты пишешь гугл
источник

AB

Artur BAGArt in phpGeeks
Или скажем сервис покупки авиабилетов и у тебя на каждый маршрут по 100 поставщиков билетов
источник

AB

Artur BAGArt in phpGeeks
Тот же Яндекс авиа парсит поставщиков по запросу
источник

AB

Artur BAGArt in phpGeeks
И ответы там бывают по 20секунд
источник

M

Maxim Kainov in phpGeeks
Vladimir
Да, но не ждать пока он придет
А в это время и не надо ждать, другие потоки в это время выполняются. Если везде одно io, то ждать в любом случае придется. Короче, такая себе экономия )
источник

A

Artyom in phpGeeks
Maxim Kainov
А в это время и не надо ждать, другие потоки в это время выполняются. Если везде одно io, то ждать в любом случае придется. Короче, такая себе экономия )
А другие потоки бесплатно и моментально создаются?
И переключение между ними не стоит ресурсов?
Большинство задач всегда связано с I/O.
источник

AB

Artur BAGArt in phpGeeks
Maxim Kainov
А в это время и не надо ждать, другие потоки в это время выполняются. Если везде одно io, то ждать в любом случае придется. Короче, такая себе экономия )
Поэтому сайты и пишут на однопоточном пхп без евентлупа
источник