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

golang实现同步阻塞、同步非阻塞、异步非阻塞IO模型

一、同步阻塞IO模型TCP和HTTP示例

同步阻塞IO符合我们的直觉认知,应用程序从TCP连接接收数据缓冲区接受数据,如果没有数据就等待——此处就是阻塞,如果有数据需要把数据从内核空间读取到用户空间——此处就是同步。

在Go语言中进行同步阻塞IO编程TCP交互,可以使用标准库中的net包来实现。以下是一个示例:

package mainimport (
    "fmt"
    "net"
)func main() {
    // 监听TCP端口
    listener, err := net.Listen("tcp", ":8080")
    if err != nil {
        fmt.Println("Error starting TCP server:", err)
        return
    }    defer listener.Close()    fmt.Println("TCP server started and listening on port 8080")    for {
        // 接受客户端连接
        conn, err := listener.Accept()
        if err != nil {
            fmt.Println("Error accepting client connection:", err)
            continue
        }        // 处理客户端连接
        go handleConnection(conn)
    }
}func handleConnection(conn net.Conn) {
    defer conn.Close()    // 读取客户端发送的数据
  
http://www.lryc.cn/news/259435.html

相关文章:

  • java SSM教师工作量管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • 大数据技术之Hive(超级详细)
  • NVMe over Fabrics with SPDK with iRDMA总结 - 1
  • 【PTA刷题】求链式线性表的倒数第K项(代码+详解)
  • VSCode 创建工作区,多文件夹终端切换
  • 高阶函数(js的问题)
  • android-android源码目录
  • Json格式化
  • 数据可视化设计:让数据故事更有说服力
  • java面试题-Spring事务以及@Transactional注解详解
  • ARM流水灯
  • docker-compose单机容器编排
  • matlab信号分选系统算法-完整算法结构
  • 十八)Stable Diffusion使用教程:艺术二维码案例
  • 【LeetCode每日一题】53. 最大子数组和
  • 机器学习笔记 什么是协方差矩阵?
  • 使用Python监控服务器在线状态
  • 【JAVA】黑马MybatisPlus 学习笔记【二】【核心功能】
  • 区块链实验室(30) - 区块链期刊:Distributed Ledger Technologies: Research and Practice
  • Nginx【通俗易懂】《中篇》
  • 组件的二次封装
  • curl+postman 在java开发中的使用(提高效率)
  • 【电子取证:FTK IMAGER 篇】DD、E01系统镜像动态仿真
  • netcat瑞士军刀
  • 【征稿倒计时十天】第三届高性能计算与通信工程国际学术会议(HPCCE 2023)
  • 编程应用实际场景:台球厅怎么样用电脑给客人计时,台球计时收费系统操作教程
  • 云计算大屏,可视化云计算分析平台(云实时数据大屏PSD源文件)
  • 高频js-----js执行机制 Event Loop
  • 恢复出厂设置后在 Android 上恢复照片的 6 种常用方法
  • 人工智能_机器学习065_SVM支持向量机KKT条件_深度理解KKT条件下的损失函数求解过程_公式详细推导_---人工智能工作笔记0105