V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  infinityv  ›  全部回复第 2 页 / 共 18 页
回复总数  355
1  2  3  4  5  6  7  8  9  10 ... 18  
102 天前
回复了 bkzly83851 创建的主题 问与答 有取过公积金的兄弟吗
@bkzly83851 能分享下吗
@fox8964 买完之后出手吗?能讲讲吗
120 天前
回复了 s1eep 创建的主题 分享发现 无损入金 wise 新方法
思路不错
124 天前
回复了 DigitalG 创建的主题 Apple iPhone 双卡现在有体验还可以的搭配吗?
@kyor0 @lEONiNv2 能否推荐下漫游卡和套餐呀 不知道资费如何 是否需要实名
不懂就问 不知道性能和这个比如何 https://github.com/patrickmn/go-cache 这个看着很久没维护了
@ccFox #49 我说的是楼上的 ios 方案,ios 目前不可能直接用国内卡开通
ios 是说上次终止订阅 现在恢复的事情吧。我以为支付方式上有啥新东西呢…… 不还是得礼品卡或者 paypal…… 你直接银联卡试试……
在非缓冲 channel 中,数据的发送 (c <- 0) 必须等待接收操作 (<-c) 准备就绪。这意味着,发送操作会阻塞,直到有一个 goroutine 尝试从这个 channel 接收数据。一旦接收操作开始执行,发送操作就可以完成,数据才会被传输。在这个过程中,发送和接收操作是同步发生的,但是发送操作没有必要在时间上先于接收操作发生。(我觉得这点很重要,楼上很多说 c<- 优先于 c<-0 我觉得不对 这本身就是一个同步的过程)

a = "hello, world" happens-before <-c (在 goroutine f 中),因为它们是按顺序执行的。另一方面,c <- 0 happens-before print(a)(在主 goroutine 中),因为它们也是按顺序执行的。由于<-c 和 c <- 0 是配对的接收和发送操作,它们会同步进行,因此一旦数据通过非缓冲 channel 被发送,我们就知道接收操作已经开始(或完成),接收操作之前的所有操作,包括 a = "hello, world",都已经发生了。

综上,对于非缓冲 channel ,不能说发送操作在时间上一定先于接收操作,而是发送操作需要等待接收操作准备就绪,然后两者才能同步进行。

所以,非常明显的结论是,在你的代码中,一旦主 goroutine 执行到 print(a) 时,a = "hello, world" 明显且一定已经发生了( channel 的发送接收操作已经同步完了)。
没拉过 楼下来回答
145 天前
回复了 gongshishao126 创建的主题 汽车 人生第一台车, 10+ 到 20+ 油车求推荐
蒙迪欧 1.5t
145 天前
回复了 sxiaojian 创建的主题 分享发现 23 年了,浴霸还用那么落后的科技
为啥需要遥控啊 正常不都是物理开关吗 就是一个灯
146 天前
回复了 Livid 创建的主题 Bitcoin 拍卖 1 个 BTC
哈哈哈哈哈哈
152 天前
回复了 GuluMashimaro 创建的主题 Apple 苹果美区账号换州问题
@luhe 晚上去试试,要是可以的话你就真是大圣人( doge
154 天前
回复了 ericxjy 创建的主题 macOS 数码荔枝双十一拼车! Qbserve|AlDente
还有位置吗?
1  2  3  4  5  6  7  8  9  10 ... 18  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4364 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 04:08 · PVG 12:08 · LAX 21:08 · JFK 00:08
Developed with CodeLauncher
♥ Do have faith in what you're doing.