美文网首页
24.Go语言·协程Goroutine

24.Go语言·协程Goroutine

作者: 一枼落知天下 | 来源:发表于2019-06-11 19:24 被阅读0次

main.go

// Go语言·协程Goroutine·管道Channel
package main


import (
    model "day30/model"
)

var content string = `
————————————————Go语言·协程Goroutine·管道Channel————————————————————
一、进程和线程
    1.进程是程序在操作系统中的一次执行过程。是系统进行
    资源分配和调度的基本单位
    2.线程是进程的一个执行实例,是程序执行的最小单元,
    它是比进程更小的能独立运行的基本单位
    3.一个进程可以创建和销毁多个线程,同时一个进程中的
    多个线程可以并发执行。
    4.一个程序至少有一个进程,一个进程至少有一个线程。
二、并发和并行
    1.多线程程序在单核上运行,就是并发
        .多个任务作用在一个CPU上
        .从微观的角度看,在某一个时间点,其实只有一个任务在执行
        .进行轮询操作。
    2.多个线程程序多核上运行,就是并行
        .多个任务作用在多个CPU上
        .每个线程都在各自不同的CPU上执行
        .从微观的角度看,在某一个时间点,多个线程同时在执行
三、Go协程和Go主线程
    1.Go主线程(简称:线程、也可以理解为进程):一个Go线程上,可以
    起多个协程,协程是轻量级的线程[编译器做咯优化]
    2.Go协程的特点:
        a.有独立的栈空间
        b.共享程序堆空间
        c.调度由用户控制
        d.协程是轻量级的线程
四、小结
    1.主线程是一个物理线程,直接作用在CPU上的,是重量级的,非常耗费CPU
    资源。
    2.协程是主线程开启的,是轻量级的,是逻辑态,对资源消耗相对小。
    3.Golang的协程 :可以轻松开启上万个协程。
    其他编程语言的并发机制:一般基于线程的,开启过多的线程,资源消耗大,
五、MPG模式
    M:操作系统的主线程(是物理线程)
    P:协程执行需要的上下文
    G:协程
六、Cpu
    // 获取CPU
    cpuNum := runtime.NumCPU()
    fmt.Println(cpuNum)

    // 设置使用多个CPU
    // 1.8后,默认程序运行在多个核心上,不用设置咯。
    runtime.GOMAXPROCS(cpuNum-1)
    fmt.Println("ok")
`




func main() {
    model.Entry()
}

Utils.go

package model

import (
    "fmt"
    "strconv"
    "time"
    "runtime"
)

/**
 * [Init 入口]
 * @author Jhou Shuai
 * @datetime 2019-05-18T11:58:33+0800
 */
func Entry() {
    
}

func cpuInfo() {
    // 获取CPU
    cpuNum := runtime.NumCPU()
    fmt.Println(cpuNum)

    // 设置使用多个CPU
    // 1.8后,默认程序运行在多个核心上,不用设置咯。
    runtime.GOMAXPROCS(cpuNum-1)

    fmt.Println("ok")
}


func going() {

    go test()

    for i := 0; i <10; i++ {
        fmt.Println("[main]Hello MyGboy !"+strconv.Itoa(i))
        time.Sleep(time.Second)
    }
}

// 开启一个协程
func test() {
    for i := 0; i <10; i++ {
        fmt.Println("[Test]Hello world !"+strconv.Itoa(i))
        time.Sleep(time.Second)
    }
}

相关文章

网友评论

      本文标题:24.Go语言·协程Goroutine

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