浅谈golang并发操作变量安全的问题
数据竞争会在两个以上的goroutine并发访问相同的变量且至少其中一个为写操作时发生。现在我们来讲第三种情况具体操作golang 我们可以通过channel作为计量器,可以保证可以有多少个goroutine可以同时访问。可以保证同一时刻只有一个goroutine来访问。在Lock和Unlock之间的代码段中的内容goroutine可以随便读取或者修改,这个代码段叫做临界区。RLock()和RUnlock()获取和释放一个读取或者共享锁。这种情况下这些数据可能会以与当初goroutine写入顺序不同的顺序被提交到主存。有两种方法解决:1.变量限定在goroutine中使用,不访问共享变量2.用互斥条件访问
用户评论