memcpy(a, b, sizeof(a));五.S.
a[0] = b[0];
a[1] = b[1];
...假设memcpy应该具有更小的代码大小和更高的效率,但是在多线程系统中memcpy是否存在风险?
发布于 2015-06-12 01:29:56
memcpy在多线程环境中使用是完全安全的。除了修改目标缓冲区之外,该函数没有持久状态,也没有其他副作用。memcpy就不再保证线程安全,即操作不是原子的。除了在2中描述的内容外,两个同时运行在同一个缓冲区上的memcpy将相互干扰并产生不可预测的结果。发布于 2015-06-12 01:26:02
如果不使用锁来保证排他性,只使用memcpy()将是非常危险的!memcpy()只负责复制内存,不要确保线程安全,您应该自己添加锁。在C语言中,在用户空间中,您可以使用mutex来确保独占。
https://stackoverflow.com/questions/30793863
复制相似问题