如果是同一個函數,有沒有辦法讓 goroutine 一個接一個(一個接一個)執行?我不是故意首先使用 goroutine 的。但是TCP中的“os/exec”函數會導致tcp強制停止。因此我使用 goroutine 來避免崩潰。但我還是希望他們按順序執行,而不是同時執行。這是我的代碼。func handleTCP(conn net.Conn) { defer conn.Close() fmt.Println("handle TCP function") for { wg := new(sync.WaitGroup) wg.Add(1) go func() { cmdArgs := []string{temp_str, test_press, gh, "sample.csv"} cmd := exec.Command("calib.exe", cmdArgs...) wg.Done() }() }}
2 回答

海綿寶寶撒
TA貢獻1809條經驗 獲得超8個贊
嘗試將鎖放入函數中,這會使它們的執行順序進行。但請記住,wg.Done() 必須在函數的第一行處于延遲狀態。是這樣的:
var mu sync.Mutex
func handleTCP(conn net.Conn) {
defer conn.Close()
fmt.Println("handle TCP function")
for {
wg := new(sync.WaitGroup)
wg.Add(1)
go func() {
defer wg.Done()
mu.Lock()
defer mu.UnLock()
cmdArgs := []string{temp_str, test_press, gh, "sample.csv"}
cmd := exec.Command("calib.exe", cmdArgs...)
}()
}
}
- 2 回答
- 0 關注
- 115 瀏覽
添加回答
舉報
0/150
提交
取消