【发布时间】:2013-11-27 06:43:23
【问题描述】:
我在哪里可以获得明确的答案,我的memcpy(使用 Ubuntu 附带的 eglibc 实现)是否是线程安全的? - 老实说,我真的没有在文档中找到明确的“是”或“否”。
顺便说一句,对于“线程安全”,我的意思是只要可以安全地同时复制日期字节,就可以安全地同时使用memcpy。至少如果将只读数据复制到不重叠的区域,这应该是可能的。
理想情况下,我希望在 ARM 编译器文档中看到类似于 this 页面底部的列表。
【问题讨论】:
-
我相信任何类型的
memcpy()都是线程安全的,因为我无法想象除了自动/堆栈变量之外还需要使用任何东西。 -
@trojanfoe 两个线程复制到单个堆缓冲区怎么样?单个字节可能来自一个副本或另一个,但整个副本可能会导致交错。对我来说,这闻起来像是一种竞争条件。
-
@Adam 是的,这肯定会导致问题,但不在
memcpy()是否是线程安全的范围内。调用者需要了解这样做的后果并提供对缓冲区的必要独占访问。 -
@trojanfoe - ....什么?你做过很多(任何)多线程应用程序吗?
标签: c multithreading thread-safety glibc