LINUX.ORG.RU

Системная шина данных

 , ,


0

1

Добрый день, играюсь с системным программированием. Набросал несколько утилит, теперь хочу связать их одной шиной данных. Т.е. одна программа пишет, иные же это видят, и отвечают.
В начале выбор пал на fifo, все просто и понятно, но т.к. это очередь, сообщения доходят по очереди каждому слушателю.
Далее, unix domain sockets, они же POSIX Local IPC Sockets, тут же каждый может и слушать и писать, но только в свой собственный сокет, не обходить же сокет каждой утилиты отдельно ? Тоже отбросил ...
Разделяемая память, еще особо не смотрел, но кажется, тоже не то...

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

В сторону dbus тоже не тянет... Может, уже есть готовые решения ?

★★★★★

не обходить же сокет каждой утилиты отдельно ?

select()

В сторону dbus тоже не тянет... Может, уже есть готовые решения ?

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

gentoo_root ★★★★★ ()

Если данных немного и меняются они не слишком быстро, объект в shm вполне удобен. А для блокировок - «файл» в разделяемой памятью с flock'ом или мьютексы...

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Данных то не много, но вот скорость вполне приличная :)

joy4eg ★★★★★ ()
Ответ на: комментарий от gentoo_root

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

joy4eg ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Если данных немного и меняются они не слишком быстро, объект в shm вполне удобен. А для блокировок - «файл» в разделяемой памятью с flock'ом или мьютексы...

Блокировки в shm можно делать. С помощью futex'а.

dmitry_vk ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.