在下面的代码中,迭代运行两次。
是否可能恰好在第一次迭代和第二次迭代之间运行“ test2 <-true”?
我的意思是,在第一次迭代结束而第二次迭代未开始时,是否将true发送给“ test2”?
package main
import "log"
import "time"
func main() {
test := make(chan bool, 1)
test2 := make(chan bool, 1)
go func() {
for {
select {
case <-test:
log.Println("test")
case <-test2:
log.Println("test2")
}
}
}()
test <- true
time.Sleep(1)
test2 <- true
time.Sleep(1)
}
是。由于您的频道已缓冲,可以保存1个值。主执行流程可以继续进行,而无需您的匿名goroutine读取您发送到test
通道的值,并且可以test2
在goroutine唤醒并读取通道上的值之前在通道上发送值test
。
因为您有时间,所以不太可能发生这种情况。Sleep()调用通常会给goroutine执行时间,但是并没有告诉您在机器非常繁忙,电源处于停电状态的情况下会发生什么情况。不幸的时光或其他您没有想到的事情。
如果您的test
通道未缓冲,则该test <- true
语句将阻塞,直到您的goroutine接收到该值为止,并且在test2
从该test
通道接收任何内容之前,该goroutine至少没有接收的可能。
问题内容: 有没有一种优雅的方法可以跳过Java5 foreach循环中的第一次迭代? 伪代码示例: 问题答案: 我不会称其为优雅,但可能比使用“第一个”布尔值更好: 除此之外,可能没有优雅的方法。
问题内容: 该脚本未遍历“模块”数组的所有值。 这是运行的结果。该数组显示4个元素,但是.each黑色中的代码仅执行一次。 正在运行:打印消息[Module @ 71f09325,Module @ e1ddb41,Module @ 7069a674,Module @ 1f68f952]正在 运行:打印消息模块名称::::: puppetlabs-ntp正在 运行:打印消息安装非自定义正在 运行:工
我有一个fprintf语句,它循环3次以显示一些数据。在第一次迭代之后,MATLAB显示了一个神秘的空间,尽管我没有添加额外的\t。它的作用就像我有一个if语句在第一次迭代后显示不同的fprintf语句一样,但我在代码上没有这样的语句。有关它显示的结果,请参见链接上的图片
假设我有一个音乐平台的用户监听的下表: 其中,id(int)是收听音乐(或书籍或任何其他材料)的用户的记录,user_id(int)是收听者id,started_at(timestamp)是用户开始收听的时间,finished_at是用户完成收听的时间 我需要做的是找出用户第一次和第二次收听之间的平均时间。例如,对于user_id=101的第一个用户,它将是: “2017-10-05 15:15:
我有这个程序,每次我检查控制台的输入时,根据提供的输入,我决定是继续还是终止程序。 这是第一次,它工作得很好,但在第二次迭代中,我没有发现任何异常。 为什么它在不请求输入参数的情况下抛出异常。 这是控制台输出。
问题内容: 所以,我有这个php文件,但是第一个结果没有被包装在’result’div中,因此样式也不正确。所有后续结果均已正确包装。帮助? 编辑:根据评论,我试图拉出html。我承认我是菜鸟,但这是我想出的。似乎无法解决原始问题: scripts_post.php: single_result.php: 编辑#2:这就是上面所说的。也许这里有些东西缠着东西? 问题答案: 找到了问题。真的很傻 实