摘要: 1. 概念 单纯的将函数并发执行是没有意义的,函数与函数之间需要交换数据才能提现并发执行函数的意义虽然可以使用共享内存来进行数据的交换,但是在共享内存在不同的goroutine中容易发生竟态问题,为了保证数据交换的正确性,必须使用互斥量对内存进行加锁,这种做法势必造成性能问题,go语言的并发模型是C 阅读全文
posted @ 2021-11-04 17:10 专职 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 1. runtime.Gosched 让出CPU时间片,重新等待安排任务 package main import ( "fmt" "runtime" ) func main() { go func(s string) { for i :=0; i < 2; i++ { fmt.Println(s) 阅读全文
posted @ 2021-11-04 14:24 专职 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 1. 概念 goroutine 奉行通过通信来共享内存,而不是共享内存来通信 goroutine 是由go的运行时(runtime)调度和管理的 go程序会智能的将goroutine中的任务合理的分配给CPU执行 go语言之所以会被称为现代化编程语言,是因为它在语言层面已经内置了调度和上下文切换的机 阅读全文
posted @ 2021-11-04 11:15 专职 阅读(108) 评论(0) 推荐(0) 编辑