Russian Qt Forum
Ноябрь 27, 2024, 02:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QSharedMemory - сигнал на изменение своими руками  (Прочитано 15676 раз)
JayFOX
Гость
« Ответ #15 : Март 04, 2010, 22:25 »

Вопрос уже дурной, но: делам QLocalServer, к нему коннект QLocalSocket
Послать сообщение QLocalSocket::write(...)
а поймать как?

P.S.Не нашел в примере чата.
Записан
SABROG
Гость
« Ответ #16 : Март 04, 2010, 23:19 »

Как обычно, ловим сигнал: void QIODevice::readyRead ()

То есть сначала сервер принимает соединение: QLocalSocket * QLocalServer::nextPendingConnection ()   [virtual]
а уж QLocalSocket на базе QIODevice.
Записан
ритт
Гость
« Ответ #17 : Март 06, 2010, 02:09 »

всё бы замечательно, но вы же не собираетесь использовать QLocalSocket для уведомления другой стороны о том, что блок шаренной памяти изменился, правда ведь? :Р
Записан
JayFOX
Гость
« Ответ #18 : Март 06, 2010, 10:48 »

Да вот я тоже уже думаю, что получается прикольно)) интерес как-то стремится к абсурду)) Спасибо всем кто помог. Правильно-ли я понял - средствами QT не получить сигнал об изменении разделяемой памяти, кроме как lock() lock() и ждать unlock() а потом опять lock()?

P.S. Исключая QLocalSocket.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Март 06, 2010, 13:16 »

Правильно-ли я понял - средствами QT не получить сигнал об изменении разделяемой памяти, кроме как lock() lock() и ждать unlock() а потом опять lock()?
Я считаю что да, правильно. Вообще, что есть "сигнал об изменении разделяемой памяти"? (который Вы хотите получить). Допустим процесс 1 пишет что-то в shared memory. Вот сейчас 2 байта записаны, но запись-то продолжается. Вам ведь совсем не нужна реакция на каждое изменение shared memory. По любому процесс 1 должен закончить запись и выставить сигнал/флаг "готово" - а это просто семафор(ы). Ну и делайте их - через lock или по-другому, смысл все равно один.
Записан
JayFOX
Гость
« Ответ #20 : Март 06, 2010, 13:31 »

Да, все верно, спасибо.
Записан
JayFOX
Гость
« Ответ #21 : Март 11, 2010, 19:25 »

Решил ситуацию с помощью winapi - CreateEvent() и WaitForSingleObject().
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 23.