gpt4 book ai didi

go - 执行大量 I/O 的 go 程序崩溃

转载 作者:数据小太阳 更新时间:2023-10-29 03:35:39 25 4
gpt4 key购买 nike

<分区>

我正在尝试使用 Go 并行写入 100000 个文件。

我不确定为什么,但是当我使用 argv 参数“100000”调用它时,下面这段代码大约有 30% 的时间崩溃。

这是崩溃:

goroutine 3749 [chan send]:
main.CallShellCommand(0xc820016180, 0xea1)
.../parallel.go:13 +0x1bf
created by main.main
.../parallel.go:22 +0xbd

代码如下:

package main

import "fmt"
import "io/ioutil"
import "strconv"
import "os"
import "runtime"

func CallCommand(ch chan struct{}, id int) {
ioutil.WriteFile(fmt.Sprintf("/tmp/my_prefix_%d", id), []byte("HELLO\n"), 0644)
ch <- struct{}{}
}

func main() {
runtime.GOMAXPROCS(4)
n, _ := strconv.Atoi(os.Args[1])
ch := make(chan struct{})
for i := 0; i < n; i++ {
go CallCommand(ch, i+1)
}
for j := 0; j < n; j++ {
<-ch
}
}

备案:

  • 我的电脑有 4 个内核
  • 这是 go 1.5.3

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com