Что означает термин 'блок'?

Что делает термин среднее по блокам wrt информатика? Я видел, что он используется в нескольких случаях, но никогда не понимается то, что это означает. Как блокирование ввода-вывода? Поиск с помощью Google, кажется, не помогает мне очень.

5
задан 16.10.2010, 21:38

4 ответа

Блокирование ввод-вывод означает, что программа по существу спрашивает, "Получают меня эти данные, я буду ожидать до его готового". Это в отличие от неблокирования ввода-вывода. Существует две разновидности: "Получите меня эти данные, я собираюсь пойти, делают что-то еще. Прервите меня, когда данные будут готовы". и "Получают меня эти данные, я собираюсь пойти, делают что-то еще. Я спрошу Вас позже, если у Вас будет он уже".

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

9
ответ дан 07.12.2019, 17:13

Таким образом, это означает, что процесс зависает (ожидает), пока ввод-вывод не завершается. Эта статья Wikipedia касается его мимоходом, фокусируясь на неблокировании ввода-вывода:

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

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

0
ответ дан 07.12.2019, 17:13

Блокирование является более простым, переместите очевидный путь:

bytes = socket.read();  // Thread "blocks" or waits if there's nothing to read
doSomethingWith(bytes);

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

  • Количество одновременных соединений с поддержкой
  • Среднее время отклика замечено отдельным клиентом
  • Общая пропускная способность сервера для всех клиентов

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

0
ответ дан 07.12.2019, 17:13

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

0
ответ дан 07.12.2019, 17:13

Теги

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