【发布时间】:2013-08-19 02:26:24
【问题描述】:
我有一个 Labwindows 服务器,它在远程机器上侦听来自 python 客户端的数据。 在 Labwindows 服务器上,每当触发 TCP_DATAREADY 事件时,我都会读取缓冲区以从客户端获取数据。此时我需要解析数据并更新 UI 控件。但是,由于数据频繁到达,最好将解析数据和更新 UI 控件的任务分配给不同的线程,这样服务器就不会丢失来自客户端的任何数据。
我曾想过在 Labwindows 中使用线程安全队列。但是,我从客户端获得的数据是一个字符串。如何构造一个包含字符串元素的队列?我不能使用指针,因为每次数据到达时都会更新从客户端接收到的数据。
这是从套接字读取数据的一段代码:
case TCP_DATAREADY:
if ((dataSize = ServerTCPRead (g_hconversation, receiveBuf,
dataSize, 1000))
< 0)
{
SetCtrlVal(g_hconversation, MAINPNL_TEXTBOX,"Receive Error");
}
else
{
//receiveBuff should be passed to function that decides where to display it
display_value_from_client(receiveBuf);
}
因此,receiveBuf 不断变化,将指向它的指针保存在队列中将无济于事。 我如何在这里实现线程,以便我的线程负责解析功能,而我只需要担心从主线程中的套接字读取数据?
【问题讨论】:
标签: c multithreading queue labwindows