首页 > 在多线同步的时候lock和volatile有啥区别?

在多线同步的时候lock和volatile有啥区别?

在线程同步的时候lock和volatile有啥区别?


因题主没明确的解释,暂且理解为题主想了解同步机制里的锁机制和volatile关键字吧:

在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作、信号量(semaphore)、读写信号量(rw_semaphore)、互斥锁(pthread_mutex)、spinlock、BKL(Big Kernel Lock)、rwlock、brlock(只包含在2.4内核中)、RCU(只包含在2.6内核中)和seqlock(只包含在2.6内核中)

我们习惯将互斥锁(pthread_mutex)、spinlock、BKL(Big Kernel Lock)、rwlock、brlock(只包含在2.4内核中)、RCU(只包含在2.6内核中)和seqlock(只包含在2.6内核中)等同步机制,也称为锁机制。

而volatile关键字则不同:

volatile关键字属于编程语言范畴,被volatile关键字修饰的变量,具有易变性。所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从内存中读取。

volatile更多细节参见《Volatile关键词深度剖析》

【热门文章】
【热门文章】