为了账号安全,请及时绑定邮箱和手机立即绑定

转到线程-暂停执行

转到线程-暂停执行

Go
紫衣仙女 2021-05-05 09:05:36
我有两个执行线程,Routine 1 {// do something}Routine 2 {// do something}是否可以从例程1中暂停例程2的执行几秒钟,这怎么可能?
查看完整描述

2 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

从一个线程,不可能隐式控制另一个线程。您可以这样做,定义一个布尔值,然后可以根据时间暂停。Sleep(2 * 1e9)。


查看完整回答
反对 回复 2021-05-10
?
心有法竹

TA贡献1866条经验 获得超5个赞

无法控制另一个goroutine的执行。Goroutines是合作的。他们彼此之间不占主导地位。


您可以做的是将点放在例程2中,在例程2中检查是否允许继续进行。如


// do stuff

select {

case <-wait:

    <-resume

default:

}

然后例程1可以告诉例程1可以向例程2发送一个信号,告诉它等待:


wait <- true

// whatever stuff goes here

resume <- true

为什么要暂停goroutine?这可能有助于更好地回答您的问题。最好从您尝试做的事情而不是您想做的事情开始。这样,您就可以找到如何用语言实现自己真正想要的东西,而不是被替代为最初想像的实现方法的替代品。


查看完整回答
反对 回复 2021-05-10
  • 2 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信