memcpy是否安全?

我在网上看了一眼,无法满足自己的答案。

memcpy线程安全吗? (在Windows中)

我的意思是,如果我使用单个memcpy写入进程之间共享的内存区域(使用boost :: shared_memory_object),然后尝试使用单个memcpy从另一个进程读取该区域,那么将在写入时自动阻止一个进程发生了什么? 我在哪里可以读到这个?

memcpy通常按原始速度编码。 它不是线程安全的。 如果需要,您需要在关键部分内执行memcpy调用或使用其他一些信号机制。

take_mutex(&mutex); memcpy(dst, src, count); yield_mutex(&mutex); 

memcpy不是线程/进程安全的

像memcpy()(或memmove())这样的例程是标准C库的一部分,通过标准的头包含在内,对任何锁定机制一无所知。 锁定应该通过一些外部方式提供,如进程间互斥,信号量或类似的东西。

你在混淆“primefaces”和“线程安全”。 如果您在共享区域中同时读取和写入数据(有或没有memcpy ),那就不安全了。 但当然复制数据本身就是线程安全的。

memcpy本身也是线程安全的,至少在POSIX系统上看到这个 ,因此我猜它也在Windows上。 任何其他东西都会使它变得毫无用处。

如果它会“自动阻塞”,它必须是primefaces的(或至少管理它自己的锁),这会降低你的系统速度。 所以在你的情况下你应该使用自己的锁。