如果应用程序使用多个文件描述符执行一些繁重的工作(例如,打开-写入数据-同步-关闭),Go运行时实际上发生了什么?它是否会在发生昂贵的系统调用(如syscall.Fsync)时阻塞所有goroutines?或者只有调用goroutine被阻塞而其他goroutine仍在运行?那么编写具有多个执行大量用户空间-内核空间上下文切换的worker的程序是否有意义?对磁盘输入使用多线程模式是否有意义?packagemainimport("log""os""sync")vardata=[]byte("somebigdata")funcworker(filenamechanchanstring,w
如果应用程序使用多个文件描述符执行一些繁重的工作(例如,打开-写入数据-同步-关闭),Go运行时实际上发生了什么?它是否会在发生昂贵的系统调用(如syscall.Fsync)时阻塞所有goroutines?或者只有调用goroutine被阻塞而其他goroutine仍在运行?那么编写具有多个执行大量用户空间-内核空间上下文切换的worker的程序是否有意义?对磁盘输入使用多线程模式是否有意义?packagemainimport("log""os""sync")vardata=[]byte("somebigdata")funcworker(filenamechanchanstring,w