分类:
Golang |
标签:
Golang |
发布:2024年05月06日 |
作者:augustrush |
阅读量:1217
context可以用来在goroutine之间传递山下文信息,相同的context可以传递给运行在不同goroutine中的函数,上下文对于多个goroutine同时使用是安全的。context的作用就是在不同的goroutine之间同步请求特定的数据、取消信号以及处理请求的截止日期。
分类:
Golang |
标签:
Golang |
发布:2024年04月29日 |
作者:augustrush |
阅读量:917
Go语言处理时间相关的函数
当不得不使用共享内存来实现并发编程的,那Golang中的锁机制,就是你绕不过的知识点了。
分类:
Golang |
标签:
并发编程 |
发布:2024年01月22日 |
作者:augustrush |
阅读量:1097
Goroutine 是 Go 语言支持并发的核心,在一个Go程序中同时创建成百上千个goroutine是非常普遍的,一个goroutine会以一个很小的栈开始其生命周期,一般只需要2KB。区别于操作系统线程由系统内核进行调度, goroutine 是由Go运行时(runtime)负责调度。例如Go运行时会智能地将 m个goroutine 合理地分配给n个操作系统线程,实现类似m:n的调度机制,不再需要Go开发者自行在代码层面维护一个线程池。
单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。虽然可以使用共享内存进行数据交换,但是共享内存在不同的 goroutine 中容易发生竞态问题。为了保证数据交换的正确性,很多并发模型中必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。
分类:
Golang |
标签:
Golang |
发布:2024年01月12日 |
作者:augustrush |
阅读量:791
slice在作为参数传入函数时的问题
分类:
Golang |
标签:
Golang |
发布:2024年01月08日 |
作者:augustrush |
阅读量:753
defer是go中一种延迟调用机制,defer后面的函数只有在当前函数执行完毕后才能执行,将延迟的语句按defer的逆序进行执行,也就是说先被defer的语句最后被执行,最后被defer的语句,最先被执行,通常用于释放资源。