codecamp

Go语言 并发同步概述

本文将解释什么是并发同步,并列出Go支持的几种并发同步技术。

什么是并发同步?

并发同步是指如何控制若干并发计算(在Go中,即协程),从而

  • 避免在它们之间产生数据竞争的现象;
  • 避免在它们无所事事的时候消耗CPU资源。

并发同步有时候也称为数据同步。

Go支持哪些并发同步技术?

通道一文已经解释了如何使用通道来做并发同步。 除了使用通道,Go还支持几种通用并发同步技术,比如互斥锁和原子操作。 请阅读下面的文章来了解各种并发同步技术的使用。

我们也可以利用网络和文件读写来做并发同步,但是这样的并发同步方法使用在一个程序进程内部时效率相对比较低。 一般来说,这样的方法多适用于多个进程之间或多个主机之间的并发同步。《Go语言101》中不介绍这样的并发同步方法。

为了更好地理解各种并发同步技术,推荐在适当的时候(具有一定的Go并发编程经验时)阅读Go中的内存顺序保证一文。

Go中提供的各种并发同步技术并不能阻止Go程序员写出不正确的并发代码。 但是,这些技术使得Go程序员可以轻松写出正确的并发代码。特别地,Go中提供的独特的通道技术使得并发编程变得很轻松和惬意。


Go语言 边界检查消除
Go语言 通道用例大全
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }