我有两个执行线程,比如
Routine 1 {
// do something
}
Routine 2 {
// do something
}
是否可以暂停从例程1执行例程2几秒钟,怎么可能?
答案 0 :(得分:6)
无法控制另一个goroutine的执行。 Goroutines是合作的。他们不互相支配。
你可以做的是在例程2中加入点,检查是否允许继续进行。如
// do stuff
select {
case <-wait:
<-resume
default:
}
然后例程1可以告诉例程1可以向例程2发送信号告诉它等待:
wait <- true
// whatever stuff goes here
resume <- true
为什么要暂停goroutine?这可能有助于更好地回答您的问题。最好从一个你想要做的地方开始,而不是你想怎么做。这样,你就可以找到如何在语言中实现你真正想要的东西,而不是给你原本想象的实现方法的不良替代品。
答案 1 :(得分:1)
从一个线程中,无法隐式控制另一个线程。你可以这样做,定义一个bool并根据你可以按时间暂停.Sleep(2 * 1e9)。