我正在学习 C# 异步套接字编程,并且我了解到在某种池中重用字节缓冲区是一个好主意,然后在从套接字接收数据时根据需要检查一个。
但是,我看到了两种不同的字节数组池方法:一种使用简单的队列系统,然后根据需要从队列中添加/删除它们。如果请求了一个并且队列中没有剩余,则创建一个新的字节数组。
我见过的另一种方法对整个程序使用一个大字节数组。队列的想法仍然适用,但它是一个整数队列,它确定要使用的字节数组的切片(偏移量)。如果请求了一个并且队列中没有剩余,则必须调整数组的大小。
对于高度可扩展的服务器,哪一个是更好的解决方案?我的直觉是只使用许多字节数组会更便宜,因为我想根据需要调整数组的大小(即使我们以大块的形式分配它)会非常昂贵,尤其是当它变大时。使用多个数组似乎也更直观——使用一个我没有想到的大型数组有什么好处吗?