美文网首页
同步锁完全总结

同步锁完全总结

作者: 深圳都这么冷 | 来源:发表于2023-06-06 10:48 被阅读0次

    1.进程同步问题

    进程是不共享内存空间的,只有写共享的文件,磁盘区时需要互斥,如果要同步,使用记录锁(文件的某一段)或者文件锁(整个文件)。这种做法是君子协定,操作同一区域的程序必须遵守先请求锁再操作。如果不遵守,直接绕过锁也是没有办法禁止的

    多个进程共享的锁,必须放在进程都可以访问的内存映射区域,其实这也是记录锁的变形

    2.进程内的线程同步问题

    2.1普通锁

    普通线程锁,保护临界区

    2.2 尝试锁,限时尝试锁

    尝试锁如果拿不到直接带着错误码返回
    限时尝试锁会先等待制定的时间,如果拿不到直接带着错误码返回
    这种锁避免和无限阻塞

    2.3 如果是协作线程同步,使用锁+条件变量

    典型的如生产者消费者问题

    2.4 锁的实现

    Linux上为两阶段锁,先spin一次,如果失败再sleep

    2.5 通用信号量

    可以用来实现锁和条件变量

    2.6 读写锁

    读锁:共享锁
    写锁:排他锁
    读写锁可以使用信号量实现

    2.7 可重入锁

    获得锁的进程可以重复获得,这有利于临界区操作递归的场景,方便模块化设计

    相关文章

      网友评论

          本文标题:同步锁完全总结

          本文链接:https://www.haomeiwen.com/subject/nshgedtx.html