Сведения о вопросе

Mathprofi

20:21, 17th August, 2020

Теги

QT4: послать сигнал конкретному треду?

Просмотров: 392   Ответов: 1

Предположим, например, что есть мессенджер — у него серверная часть и клиентская. Каждое клиентское подключение осуществляется в отдельном потоке (QThread). Каждый клиент имеет уникальный идентификатор (например e-mail адрес владельца).


Как я осуществляю передачу сообщения от одного клиента к другому сейчас: каждый тред подписывается на сигнал у сервера. Когда один клиент присылает сообщение, сервер выбрасывает сигнал и все треды смотрят на идентификатор своего клиента — тот тред, у кого он совпадает с адресатом, отправляет сообщение клиенту. Все просто и отлично работает, но у меня подозрения, что это несколько неправильно. Что если клиентов миллионы? Может быть есть более разумный способ?


P.S. Каждый тред имеет также уникальный числовой идентификатор, присваиваемый автоматически при создании. Можно писать в базу соответствие этого ИД и почтового адреса. Но опять же — как послать сигнал треду с конкретным ИД?



  Сведения об ответе

lats

09:22, 17th August, 2020

Думаю нужно мидифицировать сигнал и сделать его с аргументом целочисленного типа. После этого, посылая сигнал нужно будет указать идентификатор нужного треда. Тред в свою очередь проверит, если значение аргумента полученного сигнала совпадает с его идентификатором — обработает его.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться