多线程的同步机制
Windows | Linux | C++11标准库 | 备注 |
---|---|---|---|
临界区 | 用户态(不跨进程) | ||
互斥量 | 互斥量 | Mutex | 内核态,跨进程 |
信号量 | 信号量(POSIX) | PV操作 | |
事件 | 条件变量 | condition_variable | 挂起-唤醒 |
总结
-
C++11使用Mutex(含Locks)和condition_variable可以实现OS的同步机制或其它锁。
-
Windows和Linux各自有自己的同步实现,其中临界区CriticalSection是windows独有的用户态同步实现,Linux和C++11如果使用Mutex实现临界区则是在内核态且可跨进程。
-
Linux信号量有POSIX和SysV标准。
-
原子操作可实现无锁编程。