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

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

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

Go
30秒到达战场 2021-12-20 09:54:15
我正在尝试与 Go 并行写入 100000 个文件。我不知道为什么,但是当我使用 argv 参数“100000”调用它时,下面的代码在大约 30% 的时间内崩溃。这是崩溃:goroutine 3749 [chan send]:main.CallShellCommand(0xc820016180, 0xea1)        .../parallel.go:13 +0x1bfcreated by main.main        .../parallel.go:22 +0xbd这是代码:package mainimport "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    }}
查看完整描述

1 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

@peterSO 提到应该始终在 Go 中检查错误,我应该这样做。


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

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