我有两个线程需要使用相同的已建立的连接发送TCP消息。我有一个对象让我说tcpSender我想从booth线程使用。如何设计我的软件以便不会出现并发问题和丢失的消息?
谢谢!
答案 0 :(得分:2)
答案 1 :(得分:2)
您可以将其建模为生产者/使用者,其中每个线程在准备就绪时将消息注入TCPSender
并且TCPSender
维护FIFO的队列消息。队列中的插入将被锁定(在TCPSender
内)并按顺序处理。
每次从队列中删除消息时,如果队列不为空,则会有另一个消耗消息的线程。
两个直接的好处是你可以支持任意数量的生成器,并且阻塞仅限于插入队列而不是实际发送消息(从生产者的角度来看,即)。
答案 2 :(得分:1)
如果您在发送此数据后无需获得答案,则可以使用队列。