我有一个带有TCP Socket的线程,它连接到服务器并在while循环中等待数据,因此线程永远不会结束。当套接字接收数据时,会对其进行解析,并根据数据包的操作码调用x函数。什么是最快/最好的方式?
我读到了做某种任务/消息队列系统是一种方法,但不确定是否有更好的选择。
应该提到我不能使用boost:
编辑:抱歉,半睡半醒哈哈。这是来自线程x的循环:
while (Running)
{
if (client.IsConnected())
{
Recieve();
}
FPlatformProcess::Sleep(0.01);
}
在Receive函数中,它解析数据,并且基于数据包操作码,我需要能够在主线程(GUI线程)上调用一个函数,因为很多数据包都会产生GUI对象,我无法从主要线程以外的任何其他线程创建GUI对象。
所以基本上:我有一个主线程,它产生一个进入循环的新线程,监听数据,我需要能够从主线程上运行的第二个线程调用一个函数。