Golang Go语言中的管道是调用系统的管道,还是编译器又实现了一遍?

发布于 1周前 作者 zlyuanteng 来自 Go语言

null
Golang Go语言中的管道是调用系统的管道,还是编译器又实现了一遍?

13 回复

src/runtime/chan.c

更多关于Golang Go语言中的管道是调用系统的管道,还是编译器又实现了一遍?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


完全不一样的东西,,就是一个阻塞队列。

你对管道的理解有问题。go 的管道应该是基于系统的线程封装的。

按我的理解,和 java 中的阻塞队列原理差不多吧

感觉楼主既不懂 go,也不懂系统=,=

赞同楼上的 就是 java 的有界和无界阻塞队列

google 条件变量 消费者 消费者,你也可以实现一个“ go 管道”。

楼主你是找几个 demo 就上手写的嘛?建议你多看看书,你这个问题在许式伟的《 Go 语言编程》里面有说明

你可以看看 /price/$pid/fd 看看有么有管道被打开

price -> proc
iOS 拼写检查?

呃呃呃呃呃,确实是自动给我改成 price 了

在Golang(Go语言)中,管道(Pipeline或channel)是一个核心概念,但你所提到的“管道”似乎涉及两个不同的层面:一是Unix系统中的管道技术,二是Go语言内置的管道机制。以下是对这两个层面的专业解答:

  1. Unix系统管道:这是Unix Shell命令行中的概念,用于将多个命令通过管道符(|)连接起来,实现数据的流式处理。例如,ps -ef | grep nginx命令通过管道连接了psgrep,筛选出nginx进程。这种管道技术并非Go语言特有,而是Unix/Linux系统提供的功能。
  2. Go语言管道:在Go语言中,管道通常指的是通过make函数创建的channel。channel是Go语言并发编程的核心机制之一,它允许在不同的goroutine之间进行数据通信和同步。Go语言的channel与Unix系统管道在概念上有相似之处,即都实现了数据的流式处理,但两者在实现方式、应用场景和性能特性等方面存在显著差异。

综上所述,Golang中的管道并非直接调用系统的管道,而是Go编译器和语言规范中实现的一种并发通信机制。

回到顶部