LINUX.ORG.RU

Хочу межпроцессное взаимодействие через /dev/shm

 , ,


0

1

Есть две JVM, которым нужно общаться друг с другом. Как открыть, а затем читать/писать в /dev/shm/foo понятно. Непонятно как уведомить читателя, что началась запись, и он может выйти из спячки и начать чтение?

Вот смотрю какие-то futex-ы есть, кто-то советует файл блокировать, какие еще есть методы? Что легковеснее?

★★★★★

Слать сигнал USR1 какой-нибудь в другую жвм, когда начал писать - не вариант?

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

Ядерной боеголовкой по воробьям?

anonymous
()
Ответ на: комментарий от vertexua

По перформансу не хуже /dev/shm с локами по futex? Или по сути это одно и тоже? У меня будет несколько писателей и один читатель. Почитал, что оно до константы PIPE_BUF (в линухе 4096 байтов) пишет сообщение атомарно. Вроде подойдет...

foror ★★★★★
() автор топика

парад дегенератов.

corba, rmi, rabbitmq - ты сячи их

anonymous
()

сокеты уже отсенили?

или сЭр хочет иметь сэкас с «другими» ОС и после любого обновления своей генты, зачем тогда писать на джаве непонятно

anonymous
()
Ответ на: комментарий от foror

Почитал, что оно до константы PIPE_BUF (в линухе 4096 байтов) пишет сообщение атомарно. Вроде подойдет...

Не знаю насчет вертекса, а я предлагал pipe для передачи токена. Данные можно и через shmem гонять (хотя, если они помещаются в буфер канала, не имеет смысла заморачиваться - сокет: просто и кроссплатформенно).

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

зачем тогда писать на джаве непонятно

Удобно и быстро. Неужели думал, что сервер-сайд на джаве пишут из-за кроссплатформенности?

иметь сэкас с «другими» ОС

С какими еще другими? Неужели думал, что сервер-сайд каждый месяц ОС меняет, как ты на своём локалхосте?

и после любого обновления своей генты

И как часто там меняется размер PIPE_BUF в меньшую сторону?

foror ★★★★★
() автор топика
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от tailgunner

я предлагал pipe для передачи токена

Да? ) А я уже на FileChannel и DirectByteBuffer сделал тест с несколькими писателями, по перфомансу не сильно хуже shm. И код выглядит проще.

foror ★★★★★
() автор топика
Последнее исправление: foror (всего исправлений: 2)

Есть две JVM, ... Как открыть, а затем читать/писать в /dev/shm/foo понятно.

Надеюсь ты это использовал https://github.com/OpenHFT/Chronicle-Queue ? Если да то вопросов не должно возникнуть т.к. там есть

try (DocumentContext dc = tailer.readingDocument()) {
    if (dc.isPresent()) {}
}

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

я предлагал pipe для передачи токена

Да? ) А я уже на FileChannel и DirectByteBuffer сделал тест с несколькими писателями, по перфомансу не сильно хуже shm

Ну то есть shm тебе и не был нужен. Обычно так и бывает.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от vtVitus

Оно мне Eclipse Photon сломало на 10-ой джаве. И в зависимости много всего насыпалось. Поэтому отказался. Я еще Jocket нашел, но посмотрел сырцы сделано на любительском уровне. А по перформансу с Jocket, получилось как и с пайпом, открытым через FileChannel. Но для этого ничего подключать ненужно и код очень простой получается.

foror ★★★★★
() автор топика
Последнее исправление: foror (всего исправлений: 2)
Ответ на: комментарий от foror

на 10-ой джаве.

пацаны расходимся - пионеры атакуют +).

vtVitus ★★★★★
()

непонятно как уведомить читателя, что началась запись

семафоры же

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