小编Dav*_*rez的帖子

什么是流处理的背压

我开始学习节点和流似乎是你经常使用的东西,在我读过的大部分文档中都提到了处理大文件时的“背压问题”,但我没有找到明确的解释这个问题到底是什么。我也读过使用管道可以帮助解决这个问题,但是管道究竟是如何解决背压问题的?

感谢您提前进行任何解释。

pipe stream node.js backpressure

5
推荐指数
1
解决办法
1951
查看次数

无缓冲通道上的死锁

我目前正在关注go教程,并进入了有关通道的部分,当我进行一些测试时,我发现了一个我很难理解的奇怪行为

以下代码会产生死锁错误

package main

import "fmt"

func main() {
    c := make(chan string)
    c <- "test"
    fmt.Printf("%v", <- c)
}
Run Code Online (Sandbox Code Playgroud)

但执行以下操作之一可以修复代码

使用缓冲通道:

package main

import "fmt"

func main() {
    c := make(chan string, 1)
    c <- "test"
    fmt.Printf("%v", <- c)
}
Run Code Online (Sandbox Code Playgroud)

或将值设置为不同线程上的通道

package main

import "fmt"

func main() {
    c := make(chan string)
    go func(){c <- "test"}()
    fmt.Printf("%v", <- c)
}
Run Code Online (Sandbox Code Playgroud)

第一个版本的代码产生死锁的根本原因是什么?

channel go

1
推荐指数
1
解决办法
651
查看次数

标签 统计

backpressure ×1

channel ×1

go ×1

node.js ×1

pipe ×1

stream ×1