想请教一下,比如我有两个方法我都想调用,但是我不关心第二个方法调用的结果他只需要执行就行了,我想等watch方法直接执行完,就返回结果,然后eat方法自己去跑就可以了,该怎么做
func watch(){
fmt.Println(1)
}
func eat(){
fmt.Println(2)
}
func main(){
watch()
eat()
}
想请教一下,比如我有两个方法我都想调用,但是我不关心第二个方法调用的结果他只需要执行就行了,我想等watch方法直接执行完,就返回结果,然后eat方法自己去跑就可以了,该怎么做
func watch(){
fmt.Println(1)
}
func eat(){
fmt.Println(2)
}
func main(){
watch()
eat()
}
func watch() {
for true {
if (watchResult) { // 观察结果判断
}
time.Sleep(1 * time.Second)
}
}
func eat() {
// 执行eat
}
func main() {
go eat()
watch()
}
你可以了解一下golang sync.WaitGroup 他的wait方法会阻塞代码的运行,等协程执行完了结束进程
package main
import (
"fmt"
"sync"
"time"
)
var wg sync.WaitGroup
func watch(){
fmt.Println(1)
}
func eat(){
time.Sleep(10*time.Second)
fmt.Println(2)
wg.Done()
}
func main(){
wg = sync.WaitGroup{}
watch()
wg.Add(1)
go eat()
wg.Wait()
}
当然是采用信号进行并发的控制了
package main
import "fmt"
func watch() {
fmt.Println(1)
}
func eat(done chan<- int) {
fmt.Println(2)
done <- 1
}
func main() {
done := make(chan int)
watch()
go eat(done)
<-done
}
7 回答5.4k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.4k 阅读
1 回答3.4k 阅读
2 回答939 阅读✓ 已解决
2 回答2.3k 阅读
1 回答2.2k 阅读
eat前面➕一个go就可以了。