知识卡片
通信表达所有权
内容
CSP 思路强调通过通信同步状态,而不是让多个协程随意共享内存。channel 把数据传递和等待关系合在一起,能把并发协议写成清晰的程序结构。
参考来源
- 位置:《Go语言底层原理剖析》第16章《通道与协程间通信》16.1节《CSP并发编程》
- 结论依据:原文引用"不要通过共享内存来通信,通过通信来共享内存"作为设计思想,说明"过去,多线程或多进程程序通常采用共享内存进行交流,通过信号量等手段实现同步机制,但Tony Hoare通过同步交流(Synchronous Communication)的原理解决了交流与同步这两个问题","通过命名的通道发送或接收值进行通信",因此可以推出"CSP 用通信表达同步和所有权转移,而不是共享内存加锁"的结论。
- 原始内容:不要通过共享内存来通信,通过通信来共享内存。——罗勃·派克……CSP(Communicating Sequential Processes,通信顺序进程)是用于描述并发系统中交互模式的形式化语言,其通过通道传递消息……过去,多线程或多进程程序通常采用共享内存进行交流,通过信号量等手段实现同步机制,但Tony Hoare通过同步交流(Synchronous Communication)的原理解决了交流与同步这两个问题。在CSP语言中,通过命名的通道发送或接收值进行通信。