sobomax писал(а):Код который блокирует запускается в отдельном worker триде. Дальше объяснять или уже понятно?
Да, отстал я похоже от жизни, вот что оказывается нынче nonblocking-ом называют
А я вегда думал, что это когда весь IO делают в одном потоке, как например Squid или Postgresql во многич случаях...
Хм, по моему оно всегда так называлось. Non-blocking intefrace отличается от blocking тем что он возвращает управление в вызывающий код сразу же а не ждет завершения операции которая может занять неопределенно долгое время (network IO например).
sobomax писал(а):
Хм, по моему оно всегда так называлось. Non-blocking intefrace отличается от blocking тем что он возвращает управление в вызывающий код сразу же а не ждет завершения операции которая может занять неопределенно долгое время (network IO например).
Хмм, тут похоже проблема терминологии
Мне всегда казалосЬ, что non-blocking операции не могут "занять неопределенно долгое время", сколько смогли, столько и прочитали/протолкнули, остальное доделаем в следующий раз...
Или в случае IO in multithread environment теперь тоже non-blocking называют???
sobomax писал(а):
Хм, по моему оно всегда так называлось. Non-blocking intefrace отличается от blocking тем что он возвращает управление в вызывающий код сразу же а не ждет завершения операции которая может занять неопределенно долгое время (network IO например).
Хмм, тут похоже проблема терминологии
Мне всегда казалосЬ, что non-blocking операции не могут "занять неопределенно долгое время", сколько смогли, столько и прочитали/протолкнули, остальное доделаем в следующий раз...
Или в случае IO in multithread environment теперь тоже non-blocking называют???
Правильно non-blocking операция не может занять "неопределенно долгое время", об этом и речь. А вот blocking вполне может. В случае сетевого IO с использованием stream protocol любая операция записи может занять неопределенное время потому что надо получить подтверждение от принимающей стороны, сделать ретрансмиты итд.
При чем здесь "IO in multithread environment"?
Я говорю о том что любой blocking API (IO, whatever) можно превратить в non-blocking вызовом этого API в отдельном worker thread и написанием небольшой обвязки.