2012-04-25 2 views
4

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

+1

Серьезно? Почему бы просто не назвать название вопроса? http://en.wikipedia.org/wiki/Event-driven_programming – JonnyReeves

+2

это не дает правильных ответов :( – omegasbk

+0

Я не уверен, что у вас даже есть вопрос. Чтобы ответить на ваш вопрос, нет, это не так. к чему относится программирование, управляемое событиями, возможно, вы захотите прочитать [Образец наблюдателя] (http://en.wikipedia.org/wiki/Observer_pattern) – JonnyReeves

ответ

6

Программирование, управляемое событиями! = Резьбовое программирование, но они могут (и должны) перекрываться.

Резьбовое программирование используется, когда несколько действий необходимо обрабатывать системой «одновременно». Я использую одновременно слабо, так как большинство ОС используют модель совместного использования времени для потоковой деятельности или, по крайней мере, делают это, когда есть больше потоков, чем доступные процессоры. В любом случае, не связанный с вашим Q.

Я бы использовал программирование с резьбой, когда мне нужно приложение для выполнения двух или более вещей - например, получение ввода пользователем с клавиатуры (поток 1) и выполнение вычислений на основе принятого ввода (нить 2).

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

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

Это должно отвечать на все ваши вопросы. Первый комментарий Джонни/пункт заслуживает внимания - более конкретное о том, что вы не понимаете, даст вам лучшие ответы.

+0

«любые дополнительные входящие события будут заблокированы или потеряны во время обработки первого события». Так что же происходит с Node.js, поскольку он является однопоточным? – Donato

+0

@ Donato - Я не знаю достаточно о node.js, чтобы ответить на этот вопрос. С чуть более подробной информацией он может сделать достаточно хороший вопрос о себе. – GlenH7

 Смежные вопросы

  • Нет связанных вопросов^_^