Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
События в c++
|
|||
|---|---|---|---|
|
#18+
luislomNekZСовсем не для этого они предназначены, учитывая, что стандартная реакция на такой сигнал -- завершение программы. Может, прежде чем эксперта включать, изучите POSIX сигналы, возможности их применения и предназначение. Для затравки (на каком курсе учитесь, предпоследнем?) Я давно уже закончил учёбу, 3 года назад, во-первых. Во-вторых, POSIX-сигналы используются для IPC. Использовать их в качестве событийной модели одного приложения -- верх садомазохизма (если только нет никаких ограничений на зависимости от сторонних либ) и вообще не хочется лабать хотя бы коллбэки/обсервер. В-третьих, как вы собираетесь отправлять различные данные через сигнал? В-четвёртых, а зачем вообще мешать мух с котлетами обработку сигналов, которые могут прийти не только из нашего приложения? В-пятых -- анал огично можно извратиться с unix-сокетами и найти ещё кучу способов вплоть до веб-сокетов. Но кому оно надо? В общем и целом, это очень плохая идея. Вы меня не убедили. Нужны более веские аргументы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 14:26 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
NekZЯ давно уже закончил учёбу, 3 года назад, во-первых. Во-вторых, POSIX-сигналы используются для IPC. Использовать их в качестве событийной модели одного приложения -- верх садомазохизма (если только нет никаких ограничений на зависимости от сторонних либ) и вообще не хочется лабать хотя бы коллбэки/обсервер. В-третьих, как вы собираетесь отправлять различные данные через сигнал? В-четвёртых, а зачем вообще мешать мух с котлетами обработку сигналов, которые могут прийти не только из нашего приложения? В-пятых -- анал огично можно извратиться с unix-сокетами и найти ещё кучу способов вплоть до веб-сокетов. Но кому оно надо? В общем и целом, это очень плохая идея. Вы меня не убедили. Нужны более веские аргументы. Что характерно: прав на все 100%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 14:49 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov , ну ты согласен что исходник из 5-х строчек не может быть показательным примером к работе с "событями" в общем понимании этого слова? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 17:17 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
maytonну ты согласен что исходник из 5-х строчек не может быть показательным примером к работе с "событями" в общем понимании этого слова? Я не согласен с существованием "событий в общем понимании этого слова". Есть поток управления, который при определённых условиях может попасть в определённое место кода. Кто хочет - может называть совокупность этих условий "событием", а типовой код, который проверяет его наступление и передаёт управление куда надо - "паттерном". Я же человек старой школы и называю код - кодом, функции - функциями, а значения функциональных переменных - колбэками (накрайняк - обработчиками). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 17:39 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
Коллеги, вы и далее можете рассуждать о свойствах ваших сферических коней и о их скорости в вакууме, но будет ли от этого толк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 19:09 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
maytonВ моём понимании событие это нечто более сложное чем callback. Должна быть "среда" где события ходят. Событие должно существовать независимо от процесса его продившего. И событие может быть принято (перехвачено) несколькими подписчиками (процессами или потоками или приложениями).Угу. Все описанное существует сегодня в Qt - его signal-slot система. Причем именно в том виде как ты описал. maytonВышеуказанный пример на С++ в моём IMHO не подходит под эти критерии. Да, Qt это нечто большее чем С++, но это все еще С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 21:38 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
maytonВ моём понимании событие это нечто более сложное чем callback. Должна быть "среда" где события ходят. Событие должно существовать независимо от процесса его продившего. И событие может быть принято (перехвачено) несколькими подписчиками (процессами или потоками или приложениями). Вышеуказанный пример на С++ в моём IMHO не подходит под эти критерии. Согласен с вами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 08:45 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
В общем задача у меня стояла такая: есть список объектов, состояния которых может меняться, я хотел по изменению этих состояний вызывать обработку соответствующих объектов, у которых это состояние поменялось, чтобы не загружать систему. Ну пока сделал обработку всего списка, в событие библиотеки libevent. Событие срабатывает через указанное время. Решение смахивает на таймеры в C#, ну да ладно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 09:00 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто pattern "Subject - Observer" из GoF. Попробую еще его применить. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 09:03 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
La Franceесть список объектов, состояния которых может меняться, я хотел по изменению этих состояний вызывать обработку соответствующих объектов, у которых это состояние поменялось, чтобы не загружать систему. А состояние этих объектов меняется божественным вмешательством или всё-таки каким-то кодом? Если таки кодом, то что мешает этому коду поставить изменённые объекты в очередь на обработку и подать сигнал обработчику "работай нах"?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 12:19 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
La FranceПопробую еще его применить. К трём выше вариантам: boost::signal POSIX signal; да его можно использовать в событийно-ориентированном программитровании, неосиляторы пусть не возмущаются. Qt signal/slot добавить можно ещё один ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 13:00 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Да все уже) паттерн Наблюдатель в моем случае не прокатит - всё равно, что напрямую вызвать обработку запросов после их генерации, аналогично с событиями. Работа будет через libevent ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 13:02 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
luislomPOSIX signal; да его можно использовать в событийно-ориентированном программитровании, неосиляторы пусть не возмущаются. Опять никаких аргументов, кроме кода с перехватом сигнала, подобный которому я видел, читая мануал по программированию для QNX. "да его можно использовать" звучит как "Да, понос можно лечить путём затыкания заднего прохода" :) Т-с-с-с-с... Посоны, ещё можно в качестве событийной модели использовать AMQP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 14:01 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
luislom, Во-первых, nginx написан на С, а не плюсах. А там с этим делом... у каждого своя кухня. Во-вторых, сигналы используются для управления извне (IPC) я уже раньше упоминал этот термин, и, да, у него есть воркеры, которым нужно общаться друг с другом. В-третьих, не путайте событийную модель и IPC, это разные вещи, хотя небольшое пересечение у них есть -- хэндлер. Фактически, не все вещи, предполагающие наличие хэндлера относятся к событиям и всему, что с ними связано. А теперь прочитайте изначальное сообщение ТСа и подумайте как хорошо оно вяжется с тем, что вы предлагаете. Думаю автор не хочет лабать серьёзного демона с воркерами и кучей форков. В общем и целом, я считаю дискуссию бессмысленной, как и ваш совет по поводу POSIX-сигналов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 14:57 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
NekZluislom, Во-первых, nginx написан на С, а не плюсах. А там с этим делом... у каждого своя кухня. А вот в плане юзания обёрток сисколов в ядро, С и С++ абсолютно идентичны, А что не идентично, что не дёргает сискол, в nginx тоже по своему половина libstd переписана. Во-вторых, сигналы используются для управления извне (IPC) я уже раньше упоминал этот термин, и, да, у него есть воркеры, которым нужно общаться друг с другом. В-третьих, не путайте событийную модель и IPC, это разные вещи, хотя небольшое пересечение у них есть -- хэндлер. Фактически, не все вещи, предполагающие наличие хэндлера относятся к событиям и всему, что с ними связано. Любой сигнал приходит на thread 0 процесса, и что мешает нам юзать IPC между потоками, тем более, например, в Линуксах с точки зрения шедулера задач и всей подсистемы реализации IPC ядра, разницы между потоком и процессом никакой. Вы ещё начните отвергать возможность использования msgqueue, shared memory, semaphore, mutex из IPC между потоками. А теперь прочитайте изначальное сообщение ТСа и подумайте как хорошо оно вяжется с тем, что вы предлагаете. Думаю автор не хочет лабать серьёзного демона с воркерами и кучей форков. В общем и целом, я считаю дискуссию бессмысленной, как и ваш совет по поводу POSIX-сигналов. И вот TC вообще не уточнял что и как нужно. Спрашивалось про систему для организации генерации события и его обработки. И чем, кроме того, что не везде запихнёшь, ( хотя именно это я про сигналы и не утверждал), этой теме не соответствуют POSIX сигналы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 15:39 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
Вдогонку к теме: я пишу сервер, и при выключении среды либо закрытии сервера из консоли требуется его адекватная остановка. Мне сказали сделать это тоже через libevent. Меня интересует вопрос какие стандартные способы существуют для решения этой задачи? Я имею ввиду программе приходит сигнал о её завершении - она перед завершением выполняет какие-то действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 15:52 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
La France, если из под винды - SetConsoleCtrlHandler ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 16:45 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
La FranceВдогонку к теме: я пишу сервер, и при выключении среды либо закрытии сервера из консоли требуется его адекватная остановка. Мне сказали сделать это тоже через libevent. Меня интересует вопрос какие стандартные способы существуют для решения этой задачи? Я имею ввиду программе приходит сигнал о её завершении - она перед завершением выполняет какие-то действия. POSIX сигнал-это системный вызов, прерывает выполнение любых задач в процессе, и запускает обработчик в его потоке с номером 0. Так что для определённым образом немедленного реагирования на какую-то ситацию POSIX сигнал идеален. Можно и через libevent, но, заглянув в исходники, увидите, что этот функционал libevent есть просто обёртка над стандартными POSIX сигналами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 16:54 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
Насколько я помню у "сигналов" нет очереди. Тоесть обработан будет не обязательно первый. А тот который "успел". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 19:27 |
|
||
|
События в c++
|
|||
|---|---|---|---|
|
#18+
maytonНасколько я помню у "сигналов" нет очереди. Тоесть обработан будет не обязательно первый. А тот который "успел". Real-time сигнали очередезируются, это не справедливо только сигналов не реального времени. Тут всё описано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 21:24 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38617769&tid=2019529]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
17ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 21ms |
| total: | 175ms |

| 0 / 0 |
