首页 > 解决方案 > 从指针同时读取是否安全?

问题描述

我正在开发图像上传器,并希望同时将图像调整为不同的大小。一旦我将文件作为 []byte 读取,我就会将该缓冲区的引用传递给同时运行的调整大小函数。

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

谢谢!

标签: go

解决方案


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

如果这是一个一次性脚本,你会没事的。但如果它是更大程序的一部分,我建议通过明智地保护并发访问来对代码进行未来验证。在您的情况下,诸如读写器锁之类的东西可能是一个很好的匹配——所有读者都将能够同时获取锁,因此对性能的影响可以忽略不计。然后,如果您确实决定将来可以修改这些数据,那么您已经为安全奠定了适当的基础。

不要忘记在启用竞赛检测器的情况下运行您的代码。


推荐阅读