关于Golang的那些事(八)-- 使用共享变量实现并发
在上一篇文章中,我用goroutine和通道来实现了一种直接和自然的并发方式。在串行程序中(也就是一个程序只有一个goroutine),程序中各个步骤的执行顺序由程序逻辑来决定,比如在一系列语句中,第一句在第二句之前执行,以此类推。如果没有先后顺序,那么这两件事就是并发的。在并发调用的时候如果没有额外的同步机制的情况下,从两个或多个goroutine同时调用这个函数,它们都能正常的运行,那么我们称之为这个函数是并发安全的。 我们经常会遇到并发调用不工作的情况,包括死锁、活锁以及资源耗尽,最重要的...阅读全文