multithreading - “synchronization primitive”的定义

标签 multithreading language-agnostic synchronization terminology

术语“同步原语”到底是什么意思?例如:互斥锁,关键部分,等待计时器,事件,监视器,条件变量,信号量。它们都是同步原语吗?我还没有列出其他同步原语吗?这些是有效的问题吗?

最佳答案

同步原语是平台(例如操作系统)为支持线程或进程同步而向其用户提供的简单软件机制。它们通常是使用较低级的机制(例如原子操作,内存屏障,自旋锁,上下文切换等)构建的。

互斥量,事件,条件变量和信号量都是同步原语。共享锁和排他锁也是如此。 Monitor通常被认为是高级同步工具。这个对象保证使用其他同步原语(通常带有条件变量的排他锁来支持等待和发信号)对其方法进行互斥。在某些情况下,将监视器用作构建块时,它也被视为同步原语。

关键部分不是同步原语。它是执行路径的一部分,必须对其进行保护,以防止并发执行,以维护某些不变性。您需要使用一些同步原语来保护关键部分。

关于multithreading - “synchronization primitive”的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8017507/

相关文章:

c# - Backgroundworker ReportProgress事件不会触发

function - 何时创建类和函数?

java - 使用 ConcurrentMap 双重检查锁定

c++ - 我可以使用互锁操作来更新多个值以避免锁定临界区/互斥锁吗?

c# - INotifyPropertyChanged 导致跨线程错误

C89:使用 rand_r() 的多线程随机值

c++ - 延迟窗口在mfc上显示文本

math - float 学有问题吗?

mysql - 您将如何为此类问题建立数据库?

java - Tomcat 网络套接字 TEXT_FULL_WRITING