|
|
1
3
认真看看
有一件事是肯定的,那就是 buffers 处理突发输入的基本思想是 排队 .
然后,突发将填充该输入队列,直到您能够处理它们。您可能需要限制队列大小,以避免占用所有内存。 |
|
|
2
1
同样,我不认为在发送完成之前更改缓冲区是个好主意。
您将需要一个关键部分(或类似的部分)来在线程之间很好地共享队列,如果没有数据准备就绪,则可能需要一个事件或信号量供发送线程等待。 |
|
|
3
0
如果不了解您的具体设计,就很难知道答案。一般来说,我会避免维护自己的“缓冲区包”,而是使用操作系统内置的缓冲区包——堆。
我会要求SendFoo的用户分配一个带有new的Foo实例,并告诉他们在调用SendFoo之后,内存不再由他们的代码“拥有”,因此他们不应该使用它。 你可以通过一些小技巧来进一步实施:
此接口还强制每个WSASend使用一块内存。在两个WSASend调用之间共享一个缓冲区时,您真的踏入了一个危险的领域。 |
|
|
Yomal · 在java中,如何知道线程池的任务何时结束 8 年前 |
|
|
Pissu Pusa · 实现非阻塞线程安全的单例日志记录类[关闭] 9 年前 |
|
|
duy · 在Spring 4中运行并行线程的优雅方式 9 年前 |
|
|
Roger Johansson · Golang阻塞和非阻塞 10 年前 |
|
|
latefreak · Python+Tornado用于会计软件 11 年前 |
|
|
canni · 如何将此代码转换为非阻塞和无锁代码? 12 年前 |
|
|
Mil0R3 · 回调未在Node.js中异步执行 12 年前 |