2011-11-06 28 views
4

我想一起使用Asio和Qt嗎?他們每個人都有一個必須被調用的方法,並且每個人都阻止例如:Asio有io_service.run()和qt有QCoreApplication.exec()如果我運行其中一個,那麼另一個不能運行。如何將Asio網絡庫與Qt庫集成?

我有兩個解決方案:

  1. 創建另一個線程和調用io_service.run()。
  2. 創建一個100ms週期的計時器,並從調用QCoreApplication.exec()的同一線程調用io_service.poll()。

這些解決方案是否正確?

+0

的可能的複製[如何整合Boost.Asio的像的Qt4或GTK GUI框架的主循環(http://stackoverflow.com/questions/1001032/how-to-integrate-boost-asio-main-loop-in-gui-framework-like-qt4-or-gtk) –

回答

0

你絕對想看看你的應用程序的多線程。 Qt可以幫助你很好的運行platform-independent threading classes。您還需要在objects owned by different threads之間解決communication,並且還需要記住painting is limited outside of the GUI thread

+0

不,這樣,Qt使用select體系結構,我需要Linux內核中的proactor體系結構2.6那Asio有這個功能。所以這不是我的問題? **我需要使用Asio。**對於遲到的回答感到抱歉。 – softghost

+0

我明白你的問題意味着:你需要在你的Qt應用程序中使用ASIO,但不知道是否/如何多線程它。抱歉的困惑,但你確切的問題是什麼? :) – sjwarner

+0

是我以前的解決方案好嗎?在性能:每100毫秒調用io_service.poll()是一個很好的工作? – softghost