在一个聊天系统里,我要读取我的好友列表,那么我要向服务端发送一条数据告诉服务端,然后在消息接收线程中就会收到消息。
现在大概是这样的情况: 消息接收线程 {
if(接收消息()== true)//此处没有消息时会阻塞,套接字被关闭返回 false { str = 收到的消息; //收到的消息是 json 格式的好友列表 }
}
getFirendList(){ ws.send("获取好友列表"); }
当我发送获取好友列表请求后,我只能在消息接收线程中收到好友列表信息,我希望能把获取好友列表写到一个函数里,然后我在 A 线程中调用就直接能获取到。
我能想到的就是定义一个全局变量 buff 临时存储消息,当 getFirendList()被调用时,执行 ws.send("获取好友列表");,然后再返回 buff,但不能马上返回,得延迟 2 秒,让消息接收线程给 buff 赋值后再返回。但这样我觉得太寒酸了,如果弄一个信号量标识一下,等消息接收到好友列表保存,并更改信号量后,再返回,这样也不错,但是我觉得这样又有点浪费 CPU 资源,因为要用循环判断信号量有没有被改变。
所以我想问问大家有没有什么更好的方法。