我的应用程序是一个简单的消息发送者/接收者通过带有GUI的TCP / IP。到目前为止,所有内容都是一个单独的线程,但我想在单独的线程中拆分TCP / IP通信块和GUI。我认为,我需要一个共享数据结构(如QQueue< QString>)来在GUI线程和TCP / IP线程之间来回传递消息。
问题是:我在哪里放置这个共享数据结构?如果我把它放在任何一个线程中,其他线程如何访问它? O是否更好地使用QSharedMemory之类的东西?
答案 0 :(得分:0)
我个人创建了一个全局Singleton自旋缓冲区,它是线程中的共享资源。
让“feed thread”(来自你的TCP / IP线程)将数据放在缓冲区上。 让你的“读取线程”(从你的GUI)从缓冲区中提取数据。
确保你对“puts”和“gets”都有正确的锁定,以避免竞争条件和死锁。
约翰