내가 좋아하는 실행의 두 개의 스레드,이동 스레드 - 일시 정지 실행
Routine 1 {
// do something
}
Routine 2 {
// do something
}
가 몇 초 동안 루틴 1 일과 2의 실행을 일시 정지 할 수 있는가, 어떻게 가능 할 수 있나요?
내가 좋아하는 실행의 두 개의 스레드,이동 스레드 - 일시 정지 실행
Routine 1 {
// do something
}
Routine 2 {
// do something
}
가 몇 초 동안 루틴 1 일과 2의 실행을 일시 정지 할 수 있는가, 어떻게 가능 할 수 있나요?
하나의 스레드에서 다른 스레드를 암시 적으로 제어 할 수 없습니다. 당신은 이것을 할 수 있고, bool을 정의 할 수 있으며, 시간에 따라 멈출 수 있습니다. 잠깐 (2 * 1e9).
다른 goroutine의 실행을 제어 할 수 없습니다. 골 루틴은 협동 조합입니다. 그들은 서로를 지배하지 않습니다.
당신이 할 수있는 일은 그것이 루틴 2에서 루틴을 진행할 수 있는지를 확인하는 포인트를 넣는 것입니다.
wait <- true
// whatever stuff goes here
resume <- true
왜 당신이 goroutine을 일시 정지하고 싶어 : 이러한
// do stuff
select {
case <-wait:
<-resume
default:
}
그런 다음 루틴 1 일이 기다릴 말하는 일과 2에 신호를 보낼 수 루틴 말할 수
로? 그게 당신의 질문에 더 잘 대답 할 수 있습니다. 자신이 원하는 방식보다는 자신이하려는 것을 시작하는 것이 가장 좋습니다. 그렇게하면 원래 상상했던 방법을 대신 할 수있는 방법 대신 가난한 대체물을받는 대신 언어에서 실제로 원하는 것을 얻을 수있는 방법을 찾을 수 있습니다.
대다수의 (다중) 복제물에 대한 질문을 하향 투표했습니다. – zzzz
[동시 실행 루틴의 상호 배제] 가능한 중복 (http://stackoverflow.com/questions/8315970/mutual-exclusion-of-concurrent-go-routines) – peterSO
그건 내 질문과 같지 않았습니다. 내 것은 완전히 다릅니다. – alessandro