【golang】并发编程通过共享通信

golang 并发编程通过共享通信-不推荐

1 我理解的编发编程的基础于协调,协调就需于对话、沟通,难点也在此,并发本身不复杂,编发编程绕不开资源竞争问题,所以写并发我们写的最多的就是资源竞争,资源竞争操作必须保证其原子性,资源竞争后面分享

2 并发编程协成通信方式常见有两种:共享、消息,共享一般情况下,普通开发者接触最多的就是内存共享,在golang 中共享不是推荐通信手段,通过管道channel发送消息是一种更好的方式

摘抄一段官方的共享内存实例如下:(程序臃肿、业务复杂后维护起来更加琐碎)

package main

import (

    "fmt"

    "runtime"

    "sync"

)

var counter int = 0

func Count(lock *sync.Mutex) {

    lock.Lock()

    counter++

    fmt.Println(counter)

    lock.Unlock()

}

func main() {

    lock := &sync.Mutex{}

    for i := 0; i

        go Count(lock)

    }

    for {

        lock.Lock()

        c := counter

        lock.Unlock()

        runtime.Gosched()

        if c >= 10 {

            break

        }

    }

}

3 结论:不推荐

golang后端技术

解答一道golang面试题

2022-6-4 11:20:40

golang后端技术

知识分享之Golang——用于快速判断指定字符串是否存在于一个数组中的工具函数

2022-6-4 11:26:20

搜索