2012-05-22 151 views
-1

我有一个缓冲区来从套接字读取数据,但我有一个问题,多3线程想访问他,我怎么能为他们创建多线程缓冲区?多线程缓冲区C++

谢谢!

+0

你想施加什么样的规则。 Serialise阅读?或者是其他东西? –

回答

1

它完全取决于线程期望从套接字获得的内容。来自套接字的数据不太可能在三线程的读取之间被混淆,因此您需要在一定范围内进行一些同步,而不仅仅是确保每个线程都可以从套接字读取字节而不干扰其他线程'做同样的能力。

那么线程应该如何同步呢?他们是否独立地将记录拉出插座?他们都应该读取所​​有数据吗?还有别的吗?

如果他们独立地从套接字中提取记录,那么应该只需要一个线程从套接字读取记录,构造某种记录对象,并将这些对象放置在线程安全队列中以供3个线程访问。

如果线程都应该读取相同的数据,那么您有一个缓冲区,其中每个线程向缓冲区注册,并且缓冲区会跟踪每个读者的位置。然后缓冲区会保留数据,直到所有线程都读取完毕,并且一旦所有线程都清除了数据并用套接字中的更多数据填充该空间。