-1

我有一个缓冲区可以从套接字读取数据,但是我有一个问题,超过 3 个线程想要访问他,我怎样才能为它们创建多线程缓冲区?

谢谢!

4

1 回答 1

2

这完全取决于线程期望从套接字获得什么。来自套接字的数据不太可能在三个线程的读取之间被打乱,因此您需要一些规模更大的同步,而不仅仅是确保每个线程可以从套接字中读取字节而不干扰其他线程' 做同样的事情的能力。

那么线程应该如何同步呢?他们是否独立地将记录从套接字中拉出?他们都应该读取所​​有数据吗?还有什么?

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

如果所有线程都应该读取相同的数据,那么您有一个缓冲区,每个线程在缓冲区中注册,并且缓冲区跟踪每个读取器的位置。然后缓冲区将保留数据,直到所有线程都读取它,一旦所有线程都读取它,它将擦除数据并用来自套接字的更多数据填充该空间。

于 2012-05-22T20:15:07.017 回答