POCO在TCPServer连接线程上引发事件

时间:2012-07-05 09:45:24

标签: c++ multithreading events tcpserver poco-libraries

我是Poco框架的新手,不熟悉C ++,但我正在学习。我必须在Windows中创建基于服务器客户端的应用程序。 我现在遇到的问题是我需要每分钟向客户端重复发送一些数据。我需要为与服务器有活动tcp连接的客户端执行此操作。我不知道如何创建事件,或者在线程中触发的事件,并启动所有活动线程以将数据发送到客户端。 我的第一个想法是我必须重写或扩展TCPServerDispatcher类。而且我不知道如何识别ThreadPool中的活动线程。

你有任何想法,或者建议,或者教程吗? 我无法弄明白该怎么做......

希望有人可以给我一个想法,或者一些代码示例。谢谢。

1 个答案:

答案 0 :(得分:0)

这些服务器可以<>客户端线程不能为自己获取数据?在每个线程中的read()上添加60秒超时并发送数据相当容易。也许这会涉及太多的数据库连接?

如果失败了,您是否可以将最新数据放入可锁定对象中并让线程在超时时锁定,写入和解锁最新数据?这样的解决方案应该确实具有写入超时,以防止行为不当的客户端在保持锁定时导致其服务器线程阻塞。如果它不是太大,我想服务器<>客户端线程可以复制要发送的数据,但我不是复制TBH的忠实粉丝。

有更复杂的方式向服务器发信号<>客户线程,新数据可用。很可能向每个线程发出新数据可用的信号,并让它们“立即”对其进行操作。这通常意味着服务器<>客户端线程等待多个信号。通常,延迟越低,解决方案就越复杂:(

RGDS, 马丁