powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / События в c++
21 сообщений из 46, страница 2 из 2
События в c++
    #38616508
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
luislomNekZСовсем не для этого они предназначены, учитывая, что стандартная реакция на такой сигнал -- завершение программы.

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

Для затравки (на каком курсе учитесь, предпоследнем?)
Я давно уже закончил учёбу, 3 года назад, во-первых.
Во-вторых, POSIX-сигналы используются для IPC. Использовать их в качестве событийной модели одного приложения -- верх садомазохизма (если только нет никаких ограничений на зависимости от сторонних либ) и вообще не хочется лабать хотя бы коллбэки/обсервер.
В-третьих, как вы собираетесь отправлять различные данные через сигнал?
В-четвёртых, а зачем вообще мешать мух с котлетами обработку сигналов, которые могут прийти не только из нашего приложения?
В-пятых -- анал огично можно извратиться с unix-сокетами и найти ещё кучу способов вплоть до веб-сокетов. Но кому оно надо?

В общем и целом, это очень плохая идея. Вы меня не убедили. Нужны более веские аргументы.
...
Рейтинг: 0 / 0
События в c++
    #38616555
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZЯ давно уже закончил учёбу, 3 года назад, во-первых.
Во-вторых, POSIX-сигналы используются для IPC. Использовать их в качестве событийной модели одного приложения -- верх садомазохизма (если только нет никаких ограничений на зависимости от сторонних либ) и вообще не хочется лабать хотя бы коллбэки/обсервер.
В-третьих, как вы собираетесь отправлять различные данные через сигнал?
В-четвёртых, а зачем вообще мешать мух с котлетами обработку сигналов, которые могут прийти не только из нашего приложения?
В-пятых -- анал огично можно извратиться с unix-сокетами и найти ещё кучу способов вплоть до веб-сокетов. Но кому оно надо?

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

Что характерно: прав на все 100%.
...
Рейтинг: 0 / 0
События в c++
    #38616760
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov , ну ты согласен что исходник из 5-х строчек не может быть
показательным примером к работе с "событями" в общем понимании этого слова?
...
Рейтинг: 0 / 0
События в c++
    #38616791
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonну ты согласен что исходник из 5-х строчек не может быть показательным
примером к работе с "событями" в общем понимании этого слова?
Я не согласен с существованием "событий в общем понимании этого слова". Есть поток
управления, который при определённых условиях может попасть в определённое место кода. Кто
хочет - может называть совокупность этих условий "событием", а типовой код, который
проверяет его наступление и передаёт управление куда надо - "паттерном". Я же человек
старой школы и называю код - кодом, функции - функциями, а значения функциональных
переменных - колбэками (накрайняк - обработчиками).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
События в c++
    #38616872
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, вы и далее можете рассуждать о свойствах ваших сферических коней и о их скорости в вакууме, но будет ли от этого толк?
...
Рейтинг: 0 / 0
События в c++
    #38616978
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ моём понимании событие это нечто более сложное чем callback. Должна быть "среда" где события
ходят. Событие должно существовать независимо от процесса его продившего. И событие может
быть принято (перехвачено) несколькими подписчиками (процессами или потоками или приложениями).Угу. Все описанное существует сегодня в Qt - его signal-slot система. Причем именно в том виде как ты описал.

maytonВышеуказанный пример на С++ в моём IMHO не подходит под эти критерии. Да, Qt это нечто большее чем С++, но это все еще С++.
...
Рейтинг: 0 / 0
События в c++
    #38617158
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonВ моём понимании событие это нечто более сложное чем callback. Должна быть "среда" где события
ходят. Событие должно существовать независимо от процесса его продившего. И событие может
быть принято (перехвачено) несколькими подписчиками (процессами или потоками или приложениями).

Вышеуказанный пример на С++ в моём IMHO не подходит под эти критерии.

Согласен с вами.
...
Рейтинг: 0 / 0
События в c++
    #38617164
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем задача у меня стояла такая: есть список объектов, состояния которых может меняться, я хотел по изменению этих состояний вызывать обработку соответствующих объектов, у которых это состояние поменялось, чтобы не загружать систему. Ну пока сделал обработку всего списка, в событие библиотеки libevent. Событие срабатывает через указанное время. Решение смахивает на таймеры в C#, ну да ладно.
...
Рейтинг: 0 / 0
События в c++
    #38617167
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivЭто pattern "Subject - Observer" из GoF.

Попробую еще его применить. Спасибо!
...
Рейтинг: 0 / 0
События в c++
    #38617372
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
La Franceесть список объектов, состояния которых может меняться, я хотел по
изменению этих состояний вызывать обработку соответствующих объектов, у которых это
состояние поменялось, чтобы не загружать систему.
А состояние этих объектов меняется божественным вмешательством или всё-таки каким-то
кодом? Если таки кодом, то что мешает этому коду поставить изменённые объекты в очередь на
обработку и подать сигнал обработчику "работай нах"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
События в c++
    #38617424
luislom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
La FranceПопробую еще его применить.

К трём выше вариантам:

boost::signal

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

Qt signal/slot

добавить можно ещё один
...
Рейтинг: 0 / 0
События в c++
    #38617430
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Да все уже) паттерн Наблюдатель в моем случае не прокатит - всё равно, что напрямую вызвать обработку запросов после их генерации, аналогично с событиями. Работа будет через libevent
...
Рейтинг: 0 / 0
События в c++
    #38617523
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
luislomPOSIX signal; да его можно использовать в событийно-ориентированном программитровании,
неосиляторы пусть не возмущаются.

Опять никаких аргументов, кроме кода с перехватом сигнала, подобный которому я видел, читая мануал по программированию для QNX.
"да его можно использовать" звучит как "Да, понос можно лечить путём затыкания заднего прохода" :)

Т-с-с-с-с... Посоны, ещё можно в качестве событийной модели использовать AMQP.
...
Рейтинг: 0 / 0
События в c++
    #38617567
luislom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ

Примерчик , можете ещё по его исходникам полазить,
там сигналами много чего разруливается.
...
Рейтинг: 0 / 0
События в c++
    #38617614
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
luislom,

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

А теперь прочитайте изначальное сообщение ТСа и подумайте как хорошо оно вяжется с тем, что вы предлагаете. Думаю автор не хочет лабать серьёзного демона с воркерами и кучей форков.
В общем и целом, я считаю дискуссию бессмысленной, как и ваш совет по поводу POSIX-сигналов.
...
Рейтинг: 0 / 0
События в c++
    #38617671
smald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZluislom,

Во-первых, nginx написан на С, а не плюсах. А там с этим делом... у каждого своя кухня.

А вот в плане юзания обёрток сисколов в ядро, С и С++ абсолютно идентичны, А что не идентично, что не дёргает сискол,
в nginx тоже по своему половина libstd переписана.
Во-вторых, сигналы используются для управления извне (IPC) я уже раньше упоминал этот термин, и, да, у него есть воркеры, которым нужно общаться друг с другом.
В-третьих, не путайте событийную модель и IPC, это разные вещи, хотя небольшое пересечение у них есть -- хэндлер. Фактически, не все вещи, предполагающие наличие хэндлера относятся к событиям и всему, что с ними связано.

Любой сигнал приходит на thread 0 процесса, и что мешает нам юзать IPC между потоками, тем более, например,
в Линуксах с точки зрения шедулера задач и всей подсистемы реализации IPC ядра, разницы
между потоком и процессом никакой. Вы ещё начните отвергать возможность использования
msgqueue, shared memory, semaphore, mutex из IPC между потоками.
А теперь прочитайте изначальное сообщение ТСа и подумайте как хорошо оно вяжется с тем, что вы предлагаете. Думаю автор не хочет лабать серьёзного демона с воркерами и кучей форков.
В общем и целом, я считаю дискуссию бессмысленной, как и ваш совет по поводу POSIX-сигналов.
И вот TC вообще не уточнял что и как нужно. Спрашивалось про систему для организации генерации события и его обработки.
И чем, кроме того, что не везде запихнёшь, ( хотя именно это я про сигналы и не утверждал), этой теме не соответствуют POSIX сигналы?
...
Рейтинг: 0 / 0
События в c++
    #38617693
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вдогонку к теме: я пишу сервер, и при выключении среды либо закрытии сервера из консоли требуется его адекватная остановка. Мне сказали сделать это тоже через libevent. Меня интересует вопрос какие стандартные способы существуют для решения этой задачи? Я имею ввиду программе приходит сигнал о её завершении - она перед завершением выполняет какие-то действия.
...
Рейтинг: 0 / 0
События в c++
    #38617769
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
La France,
если из под винды - SetConsoleCtrlHandler
...
Рейтинг: 0 / 0
События в c++
    #38617792
smald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
La FranceВдогонку к теме: я пишу сервер, и при выключении среды либо закрытии сервера из консоли требуется его адекватная остановка. Мне сказали сделать это тоже через libevent. Меня интересует вопрос какие стандартные способы существуют для решения этой задачи? Я имею ввиду программе приходит сигнал о её завершении - она перед завершением выполняет какие-то действия.

POSIX сигнал-это системный вызов, прерывает выполнение любых задач в процессе, и запускает
обработчик в его потоке с номером 0. Так что для определённым образом немедленного реагирования
на какую-то ситацию POSIX сигнал идеален. Можно и через libevent, но, заглянув в исходники, увидите, что
этот функционал libevent есть просто обёртка над стандартными POSIX сигналами.
...
Рейтинг: 0 / 0
События в c++
    #38617998
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню у "сигналов" нет очереди. Тоесть обработан будет не обязательно первый.
А тот который "успел".
...
Рейтинг: 0 / 0
События в c++
    #38618083
smald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНасколько я помню у "сигналов" нет очереди. Тоесть обработан будет не обязательно первый.
А тот который "успел".

Real-time сигнали очередезируются, это не справедливо только сигналов не реального времени. Тут всё описано.
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / События в c++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]