Как интегрировать сетевую библиотеку Asio с библиотекой Qt? - PullRequest
4 голосов
/ 06 ноября 2011

Я хочу использовать Asio и Qt вместе?у каждого из них есть два метода, которые должны быть вызваны, и каждый из них, например, блокируется: Asio имеет io_service.run () и qt имеет QCoreApplication.exec (), если я запускаю один из них, тогда другой не может быть запущен.

У меня есть два решения:

  1. создать другой поток и вызвать из него io_service.run ().
  2. создать таймер с циклом 100мс и вызвать io_service.poll ()тот же поток, который вызывает QCoreApplication.exec ().

Эти решения верны?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2014

Это простое решение, которое работает на любой платформе, но имеет небольшой недостаток.Вы вводите задержку в asio-часть вашего приложения, которая может быть приемлемой или нет - зависит от вашего случая.

Возможно, вас заинтересует мое решение , которое обеспечивает реальную интеграцию asioи QT mainloops.

Посмотрите также на следующий вопрос для получения дополнительной информации по этой теме: Как интегрировать основной цикл Boost.Asio в структуру GUI, такую ​​как Qt4 или GTK

0 голосов
/ 06 ноября 2011

Вы определенно хотите изучить многопоточность своего приложения.Qt помогает вам с довольно хорошими независимыми от платформы классами потоков .Вам также нужно будет обратиться к связи между объектами, принадлежащими разным потокам , а также необходимо учитывать, что рисование ограничено вне потока GUI .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...