2017-01-02 1 views
1

Golang 버퍼링되지 않은 채널은 단지 FIFO 큐입니다. 해당 큐에 얼마나 많은 항목을 저장할 수 있습니까? 제한이 있습니까?골란의 채널 대기열은 얼마나 큽니까?

+1

버퍼가 없음은 버퍼가 없음을 의미합니다. [Golang - 채널 버퍼 크기 란 무엇입니까?] (http://stackoverflow.com/questions/11943841/golang-what-is-channel-buffer-size)를 참조하십시오. – e0k

+0

하지만 버퍼되지 않은 vs 버퍼 된 속성은 큐에 추가되는 항목 수보다는 실행 중 ** 차단 **에만 영향을줍니다. 버퍼링되지 않은 채널로 전송되는 이동 루틴을 동시에 호출하면 계속해서 모든 메시지가 순차적으로 처리됩니다. 아무 것도 볼 수없는 메시지가 손실됩니다. – smokeybear

+0

차단 된 goroutines의 수는 얼마입니까? 버퍼링되지 않은 채널에 쓸 대기 중입니까? – e0k

답변

2

채널 자체에있을 수있는 항목의 수는 버퍼링되지 않으므로 0입니다. 그러나 goroutines의 수에는 채널을 보내기를 기다리는 것보다 제한이 없습니다. goroutine이 버퍼가없는 채널이나 전체 버퍼를 보내려고 시도하면 다른 goroutine이 채널에서 수신 할 준비가 될 때까지 차단합니다.

+0

하지만 대부분의 의미에서 대답을 수락 할 것입니다. 그러나 goroutines의 수는 실제로 unilmited입니까? – smokeybear

+0

또한이 경우 채널이 버퍼링되지 않으면 goroutines도 FIFO 순서로 제공됩니까? 아니면 무작위입니까? – smokeybear

+1

[goroutines의 최대 수] (http://stackoverflow.com/questions/8509152/max-number-of-goroutines)를 참조하십시오. goroutine의 수에 대한 언어 부과 된 제한은 없지만 각각 적은 양의 메모리를 사용하므로 물리적 제한이 있습니다. – e0k

관련 문제