|
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
|
|
Передача данных между потоками/процессами26.09.2019, 20:57. Показов 5303. Ответов 16
Метки нет (Все метки)
Ребят, у вас тут поактивнее раздел. В соседней ветке .NET я не нашел решения, может java-программисты знают как лучше сделать.
Суть такая. Могут работать неограниченное число копий моей программы. В программе пользователь может создавать объект Разъем. Любой из объектов с одинаковым именем должен при изменении сообщить остальным во всех запущенных процессах, чтобы они также изменились. Первоначальная реализация - Каждый объект при создании создает/открывает общий файл в памяти и запускает поток, который ждет сигнала WaitOne() в бесконечном цикле. Когда кто-то меняет состояние, он записывает данные в общий MemoryMappedFile и устанавливает сигнальное состояние. Все потоки получают сигнал, читают файл, меняют состояние объекта. По задумке, установивший сигнальное состояние поток, его и сбрасывает, когда сигнал приходит и ему в надежде, что все его уже прочитали, но увы - здесь некоторые объекты остаются в неведении. Далее я усложнил - в файл еще стал записывать таблицу всех объектов, которые используя этот же файл, в нем прописываются при создании и оставляют пометку о прочтении, а сброс сигнала делается только в случае, если все отчитались о прочтении. При уничтожении объект исключает себя из общей таблицы. Короче такая каша тоже не есть хорошо. Так как многократные чтение/запись, да еще в разных потоках заставляют сильно болеть голову. Может есть какие предложения как все это реализовать?
0
|
|
| 26.09.2019, 20:57 | |
|
Ответы с готовыми решениями:
16
Передача данных между java приложениями при плохом соединении. Посоветуйте технологии Синхронизация ресурса между потоками |
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 26.09.2019, 22:23 | |
|
Кафка?
0
|
|
|
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
|
|
| 26.09.2019, 23:17 [ТС] | |
|
0
|
|
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 26.09.2019, 23:19 | |
|
Попробуй, в описание твоё сильно не вникал, но на первый взгляд похоже
0
|
|
|
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
|
|
| 27.09.2019, 10:07 [ТС] | |
|
Что-то мне кажется, не получится прикрутить Kafka к .NET приложению. Нужно решение средствами языка.
Главное -чтобы сигнал доходил до всех. С моей задумкой с таблицей сигнал точно доходит, но часто по нескольку раз, и это все - лишнее чтение + обработка запроса, нужно запоминать последний, сравнивать не второй ли раз его суют. Наверняка можно что-то придумать попроще.
0
|
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
|
||
| 27.09.2019, 10:47 | ||
|
Добавлено через 3 минуты Ну или альтернатива: https://johnkoerner.com/csharp... -protobuf/
0
|
||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|||
| 27.09.2019, 10:54 | |||
|
Любой месседж бас спасет отца русской демократии. Многие из них кроссплатформенны и либо имеют REST API, либо клиентов под разные языки. Либо и то и другое Тот же RabbitMQ вообще на erlang написан и его юзают где угодно.
0
|
|||
|
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
|
|||
| 27.09.2019, 12:40 [ТС] | |||
|
korvin_, KEKCoGEN, я так то ни разу не программист. Так увлекаюсь немного. Что для вас кажется элементарным - для меня темный лес. Сам офигефаю, как в многопоточность забрался. Поэтому
0
|
|||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 27.09.2019, 13:45 | |
|
Так и что мешает прочитать, что такое Кафка? Ну или хотя бы на Ютубе посмотреть
0
|
|
|
|
|
| 01.10.2019, 10:05 | |
|
rvs_dk, может это поможет:
Одновременное чтение и запись в файл Многопоточность в Java Многопоточность в Java: ExecutorService Вы приведите фрагменты кода, который вы пишете в упрощенном виде. Тогда будет проще вам помочь.
1
|
|
|
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
|
|
| 01.10.2019, 10:59 [ТС] | |
|
vvm28, я так то пишу на VB.NET. Сюда, так сказать больше за концепцией обратился.
Код приводил тут Вызов события в MemoryMappedFiles. Правда я уже все усложнил. В файле организовал таблицу с подключенными потоками, в которую все отчитываются. Но сейчас проблема в том, что если мы создаем новые объекты - таблица актуальна, каждый себе присваивает корректный номер. А как только проходит изменение, идет одновременное чтение/запись из всех потоков и часть таблицы затирается. SyncLock по ссылке на файл в памяти не помогает.
0
|
|
|
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
|
|
| 01.10.2019, 11:35 [ТС] | |
|
Вот примерная схема работы
0
|
|
|
|
|
| 01.10.2019, 12:13 | |
|
Проще наверное найти какие-то готовые аналоги или похожие решения:
Why use Memory Mapped File or MapppedByteBuffer in Java Java Memory-Mapped Files – Java MappedByteBuffer
1
|
|
|
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
|
|
| 01.10.2019, 12:25 [ТС] | |
|
Возможно и так. Но с другой стороны, сейчас единственная проблема - одновременный доступ к файлу. Пока попытаюсь еще как то поковырять.
В любом случае всем спасибо за помощь.
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 01.10.2019, 14:40 | |
|
vvm28, вопроснечитайответпиши. Какая джава? ТС же несколько раз сказал что он не на джава пишет.
0
|
|
|
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
|
||
| 01.10.2019, 15:19 [ТС] | ||
|
vvm28, то есть запись/чтение в файл в памяти из разных потоков, которые могут быть еще и в разных процессах невозможно организовать без потерь информации?
Сейчас изменил методику - разбил на 3 файла, чтобы меньше путаться. 2 файла работают нормально. Осталось организовать отчет о выполнении в 3й файл. Тут либо просто число должно быть (каждый поток 1 раз увеличивает счетчик), либо через разделитель перечень номеров потоков с отметкой.
0
|
||
| 01.10.2019, 15:19 | |
|
Помогаю со студенческими работами здесь
17
Запись данных в файл несколькими потоками. Передача сообщений между процессами и потоками Передача данных между процессами (pipe) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|