2

我的应用程序是一个简单的消息发送者/接收者,通过 TCP/IP 和 GUI。到目前为止,一切都是一个线程,但我想将 TCP/IP 通信块和 GUI 拆分为单独的线程。如我所见,我需要一个共享数据结构(如 QQueue<QString>)来在 GUI 线程和 TCP/IP 线程之间来回传递消息。

问题是:我在哪里放置这个共享数据结构?如果我把它放在任何一个线程中,另一个线程如何访问它?O 使用 QSharedMemory 之类的东西会更好吗?

4

1 回答 1

0

我会亲自创建一个全局单例自旋缓冲区,它是线程之间的共享资源。

让“馈送线程”(来自您的 TCP/IP 线程)将数据放在缓冲区上。让您的“读取线程”(从您的 GUI)从缓冲区中提取数据。

确保在“puts”和“gets”上都有正确的锁,以避免竞争条件和死锁。

约翰

于 2013-05-03T18:02:26.813 回答