当前位置: 首页 > 面试题库 >

通道缓冲区大小是多少?

红朝
2023-03-14
问题内容

我正在尝试创建一个异步通道,并且一直在查看http://golang.org/ref/spec#Making_slices_maps_and_channels。

c := make(chan int, 10)         // channel with a buffer size of 10

缓冲区大小为10是什么意思?缓冲区大小具体代表/限制了什么?


问题答案:

缓冲区大小是在没有发送阻塞的情况下可以发送到通道的元素数。默认情况下,通道的缓冲区大小为0(可通过来获得此值make(chan int))。这意味着每个发送都会阻塞,直到另一个goroutine从通道接收到为止。缓冲区大小为1的通道可以容纳1个元素,直到发送块为止,因此您将获得

c := make(chan int, 1)
c <- 1 // doesn't block
c <- 2 // blocks until another goroutine receives from the channel


 类似资料:
  • 问题内容: 读取文件太大而无法容纳缓冲区时,出现致命错误。 要么, RangeError:“ size”参数不得大于Function.Buffer.allocUnsafe(buffer.js:209:3)的2147483647 如果我尝试分配1GB缓冲区,则会遇到同样的致命错误, Node.js Buffer类实例的最大大小是多少? 问题答案: V8中类型化数组的最大长度当前设置为以下值,具体取决

  • 问题内容: 构造函数中的缓冲区大小是什么意思? 当我编写程序时: 输出: 然后,缓冲区大小是什么意思,正如我希望的那样,它只能读取两个字符。但事实并非如此。 问题答案: 顾名思义,缓冲输入。这意味着它会在将输入源传递给您之前从输入源读取到缓冲区。此处的缓冲区大小是指其缓冲的字节数。 从大多数来源读取输入非常慢。仅2个字节的缓冲区将损害性能,因为您的程序很可能大部分时间都在等待输入。缓冲区大小为2时

  • ByteArrayOutputStream(int size)-创建一个新的字节数组输出流,具有指定大小的缓冲区容量(以字节为单位)。 ByteArrayOutputStream()在默认情况下有32个字节的缓冲区,这就是Apache Commons有完全相同的类org.Apache.Commons.io.output.ByteArrayOutputStream的原因:“最初的实现一开始只分配32

  • 问题内容: 我在多个地方读到,管道的默认缓冲区大小为4kB(例如,在此处),我倾向于确认该语句: 但是,当我使用一个小程序来测试缓冲区大小时(通过写入shell直到write()块),我看到了64kB的限制! 看到这个程序: 及其输出: 强烈建议shell缓冲区的大小实际上是64k!这是怎么回事? 问题答案: 其他答案告诉您管道大小为64 KB。PIPE_BUF为4KB的原因是PIPE_BUF是最

  • 问题内容: 今天,我了解到,将stdout设置为terminal并在不同情况下进行缓冲时,它是行缓冲的。因此,在正常情况下,如果我使用printf()而不以“ \ n”结尾,则仅在缓冲区已满时才在屏幕上打印它。如何获得此缓冲区的大小,这有多大? 问题答案: 实际大小由各个实现定义;该标准并没有规定最小大小(无论如何,基于我已经能够找到的大小)。没有关于如何确定缓冲区大小的线索。 编辑 章节: 7.

  • 问题内容: 我正在使用低级I / O函数“写入”以我的代码(Linux上的C语言)将一些数据写入磁盘。首先,我将数据存储在内存缓冲区中,然后在缓冲区已满时使用“写入”将数据写入磁盘。那么“写”的最佳缓冲区大小是多少?根据我的测试,更快不是越大,所以我在这里寻找答案。 问题答案: 进行写操作可能是文件系统块大小的倍数,因此可能会有一些优势,尤其是在就地更新文件的情况下。如果向文件中写入的块少于部分块