Go语言并发模型的2种编程方案
概述
我一直在找一种好的方法来解释go语言的并发模型:
不要通过共享内存来通信,相反,应该通过通信来共享内存
但是没有发现一个好的解释来满足我下面的需求:
1.通过一个例子来说明最初的问题
2.提供一个共享内存的解决方案
3.提供一个通过通信的解决方案
这篇文章我就从这三个方面来做出解释。
读过这篇文章后你应该会了解通过通信来共享内存的模型,以及它和通过共享内存来通信的区别,你还将看到如何分别通过这两种模型来解决访问和修改共享资源的问题。
前提
设想一下我们要访问一个银行账号:
typeAccountinterface{
Withdraw(uint)
Deposit(uint)
Balance()int
}
typeBankstruct{ accountAccount }
funcNewBank(accountAccount)*Bank{ return&Bank{account:account} }
func(bank*Bank)Withdraw(amountuint,actor_namestring){ fmt.Println("[-]",amount,actor_name) bank.account.Withdraw(amount) }
func(bank*Bank)Deposit(amountuint,actor_namestring){ fmt.Println("[+]",amount,actor_name) bank.account.Deposit(amount) }
func(bank*Bank)Balance()int{ returnbank.account.Balance() }
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短