gpt4 book ai didi

synchronization - 对 pthread 互斥锁涉及的完整内存屏障的说明

转载 作者:行者123 更新时间:2023-12-04 07:12:30 28 4
gpt4 key购买 nike

我听说在处理互斥体时,必要的内存屏障由 pthread API 本身处理。我想了解有关此事的更多详情。

  • 这些说法是真的吗,至少在最常见的架构上?
  • 编译器是否识别出这种隐式障碍,并在生成代码时避免重新排序操作/从本地寄存器读取?
  • 什么时候应用内存屏障:成功获取互斥锁之后和释放它之后?
  • 最佳答案

    POSIX 规范列出了必须"synchronize memory with respect to other threads" 的函数,其中包括 pthread_mutex_lock() 等函数和 pthread_mutex_unlock() .

    Appendix A.4.11说明了“同步内存”的功能:

  • ...必须被高级编译系统识别,以便内存操作和对这些函数的调用不会被优化重新排序;和
  • ...可能必须添加内存同步指令,具体取决于特定机器。

  • 从未明确指定隐含哪种内存同步指令 - 隐含规范是,如果您使用一对“同步指令”来确保一个线程中的读取必须在另一个线程中写入之后发生,那么您的程序将正确操作。这包括编译器和架构重新排序效果。

    关于synchronization - 对 pthread 互斥锁涉及的完整内存屏障的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997636/

    28 4 0