Синхронный / асинхронный / блокировка / без блокировки / BIO / НИО / AIO различные брифинги

Ошибки обычное

предположениечто существует необходимостьчтобы показать информациюпользователе, в два этапа, сначала вызовите интерфейс HTTPчтобы получить подробную информацию о данных, а затем использовать соответствующий вид показывает подробную информацию о данных.

Если скорость очень медленно, код инициирует запрос HTTP, он не застрял больше нет, пока через десять секундчтобы получить ответ HTTP, а затем продолжить вниз.

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

Но вы должны спроситьпочему это так? Другой должен быть такой ответ: «Потому что после инициирования запроса, код не застрялне двигатьсяпока после тогоответ может продолжать получать вниз.»

Я считаючто многие люди думают так, на самом деле, это не так, это не участвовать в борьбе с причинноследственной связи:

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

А почему застревает не может двигаться, который определяется операционной системой и CPU:

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

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


Синхронная и асинхронная

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

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

Это когда вещь идет, другие вещи делают это?

Строго говоряэто не требуется, нокак правилов состоянии «ожидания», потому что нормальная вещьправилоза необходимости опираться на результаты предыдущих вещей или вещей в передней части используемых ресурсов.

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

Поэтому, естественно, менее вероятно , обратить внимание на конкретные вещи определенный момента в каком состоянии.

Применение этой теории не превосходной «выстраиваться» должно идти. Где меньше ресурсов и больше в сценарии спроса будут использоваться выстраиваться.

Например, выстраиваются в очередь , чтобы купить билеты на поезд его:

в самом деле, зал билет больше заботится о пассажирах один за другим в окно , чтобы купить билет, потому что вы можете только продать билет.

Даже лихорадка все идет вокруг, или может только продать билет, так зачем беспокоиться? Мы прижались друг к другу и небезопасным.

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

Что касается состояния каждой пассажирской линии, это смотреть на него или по телефону, говорят, не нужно заботиться о.

В дополнении к этому , так как синхронизации синхронизации внешних ресурсов свинца, так как есть еще логическая последовательность вызваны.

Например, чтобы обновить код, а затем скомпилировать, а затем упаковать. Эти операции приводят , поскольку шаг использовать предыдущий шаг, так что только один выполняется в таком порядке.

О синхронизации также необходимо знать два маленьких точек:

объем Во- первых, не нужно идти в глобально синхронизированный, вам нужно только выполнить синхронизацию в некоторых ключевых моментах.

Например, только окно риса столовой продают, конечно синхронизированы, человек покупки, следующий человек , чтобы купить. Но ужин является человек достраивает, следующие люди стали есть? Конечно , нет.

Во- вторых, размер, а не только вещи , которые имеют большой размер частиц синхронизации, есть вещи , маленький размер синхронизации.

 

Но вещи , как правило , небольшие размеры естественной поддержки синхронизации, и вещи часто нужно синхронизировать большой размер ручной обработки.

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

Так называемый асинхронный, темп отличается. Так как разные, это не то же самое. Таким образом, результат:

больше , чем вы можете выполнять свои вещи, я вел мой, кто не контролировать , кто, все находятся в стадии реализации , в то же время.

 

В двух словах, синхронизация является несколько вещей, в то же время не может быть запущена, асинхронные несколько вещей, которые можно начать в то же самое время.

 

Примечание: Убедитесь, что идти, чтобы испытать «нечто большее», несколько потоков несколько вещей, несколько методов больше вещей, больше вещей несколько операторов, несколько команд процессора несколько вещей. И так далее, и так далее.

 

 

Блокирование и неблокирующие

Так называемая блокировка, имея в виду, чтобы препятствовать засорению. Это может быть понято как намерение не может двигаться, потому что она столкнулась с препятствиями, вызванных.

 

Так называемый неблокирующим, и блокирование природа является относительной, оно может быть понято как отсутствие препятствий и по- прежнему беспрепятственно.

Это лучшая интерпретация двух слов, Китай сегодня из крупных транспортных проблем, пробки:

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

 

Поэтому блокирование беспокойство не двигается, не блокирующая проблема является возможным шагом.

 

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

И поэтому он должен быть заблокирован со словом ожидания, и неблокирующая словом должно выполняться.

Вернемся к программе, то же самое блокирующее средство остановиться и ждать, неблокирующая шоу может продолжаться вниз.


Блокировка и ожидание

Просто ждать, побочный эффект блокирования, он показывает, что в течение долгого времени, не существует значимых вещей не происходит или.

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

Когда пробка, вы можете сделать так далее. Вы также можете играть в телефон, и общаться с другими людьми, или играть в карты, и даже пошли съесть что - нибудь. Потому что эти вещи не влияют на вас ждать пробок. Тем не менее, ваш автомобиль должен оставаться на месте.

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


Комбинированные два на два

Так называемый синхронный / асинхронный проблемой является то , что она не может быть запущено одновременно.

Так называемая блокировка / неблокируемое внимание , что он не может двигаться.

Благодаря сочетания рассуждений:

синхронная блокировка, вы не можете начать в то же время, не в силах пошевелиться. Только один след, можно только на автомобиле, к сожалению, по- прежнему заблокирован ТВД.

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

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

Асинхронный без блокировки, вы можете начать работу, вы можете двигаться. Несколько маршрутов, каждый маршрут может быть спортивный автомобиль, круто все нормальное движение.

Это не очень легко понять ах. На самом деле, их внимание отличается, если вы поняли этот момент, ни это сочетание вещей.

Вернемся к программе , где нити вместе и их ассоциируют:

синхронное блокирование, что эквивалентно нити ожидания.

Синхронная без блокировки, эквивалент резьбы хода.

Асинхронное блокирование, эквивалент нескольких потоков, ждущие.

Асинхронный без блокировки, эквивалент нескольких потоков работают должным образом.

 

 

I / O

Относится к IO процесса чтения / записи данных, и ждать процесса данных для чтения / записи. После того как данные в данных , полученных после операции, это не IO.

Возьмем сеть IO, процесс ожидания данных от сети , а затем в пространстве ядра на карту. Процесс чтения и написания еще одна копия пространства ядра и пользовательского пространства.

 

Поэтому IO , включая два процесса, процесс ждет данных, процесс чтения-записи (копировать) данные. Но и понять, конечно , не в состоянии включить в работу данных.

 

 

Блокировка и неблокирующего IO IO

Приложения запускаются в пространстве пользователя, данные, которые они могут работать также в пространстве пользователя. По понимать таким образом, до тех пор, пока пользователь не достигает пространства данных, пользователь не может работать на потоке.

 

Если поток пользователь был вовлечен, то он будет заблокирован на IO. Часто говорят, что блокирование операций ввода-вывода. нить Пользователь заблокирован в ожидании данных или скопированных данных.

 

После того, как неблокирующего IO поток Пользователь не участвует в двух указанных выше процессов, а именно данные были скопированы в пользовательском пространстве, только чтобы информировать пользователя нить, один вверх на может напрямую манипулировать данными.

 

нить Пользователя не заблокирована, потому что вещи появляются IO, которые часто говорят, что неблокирующая IO.

 

 

Синхронные синхронное блокирование операций ввода-вывода и ввода-вывода

Можно продолжать выполнять в соответствии с вышеуказанным пониманием синхронизации, синхронизация означает , инициируется после запроса ввода - вывода IO, необходимо получить данные ввода - вывода.

В соответствии с формой программы , разделенной на две части :

в ожидании данных, и процесс копирования данных, потоки блокируются, это синхронная блокирование ввода - вывода.

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

 

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

Строго говоря, понятие ИО, синхронизации и неблокируемой не представляется возможным, потому что они противоречат концепции пара.

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

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

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

 

Таким образом, он должен быть синхронным блокированием IO IO, IO синхронизация синхронное блокирования ввода-вывода.

 

 

Асинхронный IO и асинхронные блокировки / неблокирующий ввод-вывод

В соответствии с вышеуказанным пониманием асинхронном асинхронный запрос IO IO относится к запуску, вы не получите данные ввода-вывода может продолжаться.

 

Продолжить пользовательских потоков, а также подготовка процессы операционной системы ввода - вывода данных выполняются одновременно, и , таким образом , это называется асинхронный IO.

Способ по двум данным ввода - вывода, могут быть разделены на два типа: во

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

В процессе ожидания данных, и процессе копирования данных, то пользовательские нити должны продолжать, что асинхронный неблокирующий ввод - вывод.

 

Первый случай , что поток пользователь не участвует в процессе ожидания данных, так что асинхронный. Но нить пользователь участвует в процессе копирования данных, поэтому он блокируется. Вместе является асинхронным блокирование ввода - вывода.

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

 

рекомендация

отwww.cnblogs.com/zhouyixian/p/11116539.html