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 客户去旅游祝福语简短