zoukankan      html  css  js  c++  java
  • go语言之进阶篇创建goroutine协程

    1、goroutine是什么

      goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。

    2、创建goroutine协程

      只需在函数调⽤语句前添加 go 关键字,就可创建并发执⾏单元。开发⼈员无需了解任何执⾏细节,调度器会自动将其安排到合适的系统线程上执行。

      在并发编程里,我们通常想讲一个过程切分成几块,然后让每个goroutine各自负责一块工作。当一个程序启动时,其主函数即在一个单独的goroutine中运行,我们叫它main goroutine。新的goroutine会用go语句来创建。

    示例:

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func newTask() {
    	for {
    		fmt.Println("this is a newTask")
    		time.Sleep(time.Second) //延时1s
    	}
    }
    
    func main() {
    
    	go newTask() //新建一个协程, 新建一个任务
    
    	for {
    		fmt.Println("this is a main goroutine")
    		time.Sleep(time.Second) //延时1s
    	}
    }
    

    执行结果:

    this is a main goroutine
    this is a newTask
    this is a newTask
    this is a main goroutine
    this is a newTask

     原理图:

      

  • 相关阅读:
    flask数据库操作
    flask之--钩子,异常,上下文,flask-script,模板,过滤器,csrf_token
    Flask项目出现html文件无法自动补全
    pandas强化练习(美国交警开放的数据)
    flask初识
    爬取实时变化的 WebSocket 数据(转载)
    pep8规范
    模拟登陆
    关于在scrapy中使用xpath
    Java基础/利用fastjson序列化对象为JSON
  • 原文地址:https://www.cnblogs.com/nulige/p/10272189.html
Copyright © 2011-2022 走看看