是os. Chdir,os.Setuid和os.Setgid线程安全的进去吗?
换句话说,如果我os.Chdir在两个不同的并行运行的goroutine中执行(或其他两个函数),它是否会更改工作goroutine或整个过程的目录(这可能会导致问题)?
我在文档中找不到任何信息.
引擎盖下,os.Chdir只是调用的chdir()系统调用:
211 func Chdir(dir string) error {
212 if e := syscall.Chdir(dir); e != nil {
213 return &PathError{"chdir", dir, e}
214 }
215 return nil
216 }
Run Code Online (Sandbox Code Playgroud)
所以它影响整个过程.对于os.Setuid和,情况也是如此os.Setgid.
从多个goroutine同时调用它们可能是安全的,因为执行系统调用会停止调度程序; 但要注意竞争条件.
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |