美文网首页
协程--golang

协程--golang

作者: 沿哲 | 来源:发表于2022-09-11 15:58 被阅读0次

协程(goroutine) 是轻量级的执行线程,由关键字go定义

一个例子

package main

import (
    "fmt"
    "time"
)

func f(from string) {
    for i := 0; i < len(from); i++ {
        fmt.Println(from, ":", string(from[i]), time.Now().Format("15:04:05.000"))
        //time.Sleep(time.Second)
    }
}

func f2(from string) {
    for i := 0; i < len(from); i++ {
        fmt.Println(from, ":", string(from[i]), time.Now().Format("15:04:05.000"))
        time.Sleep(time.Second)
    }
}

func main() {
    //go f("direct")
    f("ok")
    go f2("inter")
    go f2("hhh")

    time.Sleep(5 * time.Second) //如果没有这句话,go运行的两个f2("inter")和f2("hhh")不会打印语句
}

特别注意:如果没有time.Sleep(5 * time.Second),不会执行到f2函数,因为主进程(main函数)已经执行完了

结果


从上图可以看出

  1. 阻塞执行完f("ok")后,并发执行f2("inter")f2("hhh")
  2. f2("inter")f2("hhh") 同时执行,顺序打印字母

一点改动

如果把time.Sleep(5 * time.Second)改成time.Sleep(3* time.Second),从下图可以看出,“inter”只打印了前三个字母

相关文章

  • 浅谈GoLang协程

    GoLang协程 学习golang也有一段时间了,这里讲一下自己对golang协程的使用理解,golang很多人都...

  • go 中 限制 goroutine 数量以及使用协程池

    需要使用协程池? Golang 开发需要协程池吗[https://www.zhihu.com/question/3...

  • golang中最大协程数的限制(线程)

    golang中最大协程数的限制 golang中有最大协程数的限制吗?如果有的话,是通过什么参数控制呢?还是通过每个...

  • Golang:协程

    协程(Goroutine)是与其他函数或方法同时运行的函数或方法。可以认为它是轻量级的线程。与线程相比,创建 Go...

  • 协程--golang

    协程(goroutine) 是轻量级的执行线程,由关键字go定义 一个例子 特别注意:如果没有time.Sleep...

  • 协程的使用

    Golang原生支持协程。只需要在前面加上go 就可以启动协程,比如说: package mainimport("...

  • Golang源码之Goroutine

    原文来自博客园作者: q303248153 Golang最大的特色可以说是协程(goroutine)了, 协程让本...

  • Go语言学习笔记七(并发编程)

    协程机制 Golang 线程和协程的区别 备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。 进...

  • Golang中超简单的协程同步工具

    Golang中超简单的协程同步工具 从需求出发 现在有如下需求:多协程处理一批数据,但需要所有协程都跑完才可以继续...

  • 知识分享之Golang——协程与线程的简单对比

    知识分享之Golang——协程与线程的简单对比 背景 知识分享之Golang篇是我在日常使用Golang时学习到的...

网友评论

      本文标题:协程--golang

      本文链接:https://www.haomeiwen.com/subject/zfpqortx.html