当前位置: 首页 > news >正文

go io.Pipe

没有啥能说明白的,类似就是一个通道,写和读是一对一的。读取会阻塞,只有等到写完后才可以读取。

package main

import (
    "bytes"
    "fmt"
    "io"
    "log"
    "time"
)

func main() {
    log.Println("main ...")

    reader, writer := io.Pipe()

    // 开启一个线程来搞
    go func() {
       defer writer.Close()
       for i := 0; i < 5; i++ {
          _, err := writer.Write([]byte(fmt.Sprintf("message %d\n", i)))
          if err != nil {
             fmt.Println("Error writing to pipe:", err)
             return
          }
       }
       time.Sleep(1 * time.Second)
    }()

    buf := new(bytes.Buffer)
    // 阻塞等待writer.Close()完成
    _, err := buf.ReadFrom(reader)
    //或者 _, err := io.Copy(buf, reader)
    if err != nil && err != io.EOF {
       fmt.Println("Error reading from pipe:", err)
       return
    }

    // 输出读取到的数据
    fmt.Println("Data read from pipe:", buf.String())
    log.Println("success ..")
}

http://www.dtcms.com/a/30588.html

相关文章:

  • 【拜读】Tensor Product Attention Is All You Need姚期智团队开源TPA兼容RoPE位置编码
  • 三、动规_子数组系列
  • python学智能算法(一)|模拟退火算法:原理解释和最小值求解
  • Python内置函数详解
  • 《论系统需求分析方法》写作心得 - 系统分析师
  • 分布式文件系统HDFS
  • Windows 中的启动项如何打开?管理电脑启动程序的三种方法
  • 迪威模型:引领 3D 模型轻量化技术革新
  • WordPress ltl-freight-quotes-estes-edition sql注入漏洞(CVE-2024-13488)(附脚本)
  • 【开源项目】数字孪生南昌~开源工程及源码
  • 可编辑35页PPT | DeepSeek如何赋能职场应用
  • C++STL容器之map
  • 黑马点评_登录模块
  • HtML之JavaScript BOM编程
  • 【ELK】【Elasticsearch】数据查询方式
  • ros的rqt工具箱的使用(持续更新)
  • 清华大学deepseek教程第四版 DeepSeek+DeepResearch 让科研像聊天一样简单(附下载)
  • 【Gee】Day4:分组控制
  • MySQL日志undo log、redo log和binlog详解
  • EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代
  • Grok 使用指南
  • StarRocks FE leader节点CPU使用率周期性的忽高忽低问题分析
  • 【mysql间隙锁何时出现及锁定范围】
  • vue项目接入谷歌登录
  • 【深度学习】Pytorch项目实战-基于协同过滤实现物品推荐系统
  • Redis存在线程安全吗?为什么?
  • 2025蓝桥杯JAVA编程题练习Day5
  • deepseek本地部署以及搭建知识库
  • C++(17):为optional类型构造对象
  • 有序任务规划的局限性