从指针并发读取是否安全?

时间:2019-02-06 20:58:27

标签: go

我正在使用图像上传器,并且希望同时将图像调整为其他尺寸。当我以[] byte读取文件后,便将该缓冲区的引用传递给同时运行的调整大小函数。

这样安全吗?我在考虑通过传递要由调整大小函数读取的大文件的引用来节省我的内存,并且并发性可以节省我的时间。

谢谢!

1 个答案:

答案 0 :(得分:0)

只读数据通常可以用于并发访问,但是在传递引用(指针,切片,映射等)时必须非常小心。今天也许没有人在您阅读的同时对它们进行修改,但是明天可能有人在修改它们。

如果这是一个一次性脚本,则可以。但是,如果它是较大程序的一部分,我建议您明智地保护并发访问,以确保您的代码将来可用。在您的情况下,像reader-writer lock之类的东西可能是一个很好的匹配-所有读者都将能够同时获取该锁,因此对性能的影响可以忽略不计。然后,如果您决定将来可以修改此数据,则说明您已经为w.r.t奠定了适当的基础。安全。

不要忘记在启用了种族检测器的情况下运行代码。