确认消息

时间:2014-11-03 18:51:23

标签: c multithreading sockets tcp

我实现了一个简单的确认模式,它的工作原理如下:

客户端接收器线程发送带有ackRequest的{​​{1}}将ackID保存在带有回调的双向链表中,然后将消息发送给客户端。客户收到邮件后,会回复ackID并与ackResponse相关联。当客户端接收器线程收到ackID时,它会在队列中查找ackResponse并执行回调(如果找到)。

如果线程想要来自客户端的确认,反之亦然,这可以正常工作:

ackID

但是客户端接收器线程#1不可能从客户端#2获得确认,因为确认消息将在客户端接收器线程#2中结束而不是#1:

CLIENT1  <---- ackRequest  (ID=1234) -----  CLIENT1 THREAD
                                             \- add 1234 to queue with callback

CLIENT1  ----- ackResponse (ID=1234) ---->  CLIENT1 THREAD
                                             \- look 1234 in queue up
                                              \- execute callback

我不知道如何解决这个问题,我的一个想法是全局确认队列,但这对我来说听起来不错。

感谢任何帮助。

0 个答案:

没有答案