zoukankan      html  css  js  c++  java
  • linux同步

    1. 内核同步

    主要是防止多核处理器同时访问修改某段代码,或者在对设备驱动程序进行临界区的保护。

    1. 1 .互斥量
    2.      头文件 #include<linux/mutex.h>
    3.      初始化方法:
      1.             静态初始化 DEFINE_MUTEX(name), 动态初始化void mutex_init(struct mutex *lock);
    4.      使用方法:
    5.         void mutex_lock(struct mutex *lock)   //尝试着得到互斥量,得不到则进入睡眠,睡眠期间,不能被中断
    6. 2. 信号量

    3。  自旋锁

    2. 进程/线程间同步机制

    常用的同步方式有:原子操作、互斥锁、条件变量、读写锁、文件锁、信号灯。

    1. 互斥锁

    1. Share Memory共享内存

      头文件以及相关函数

       #inlcude <sys/shm.h>

    void *shmat(int shm_id, const void *shm_addr, int shmflg); 

    int shmctl(int shm_id, int cmd, struct shmid_ds *buf); 

    int shmdt(const void *shm_addr); 

    int shmget(key_t key, size_t size, int shmflg);

    3. Message Queues消息队列

    头文件以及相关函数

    #Include<sys/msg.h>

    int msgctl(int msqid, int cmd, struct msqid_ds *buf); 

    int msgget(key_t key, int msgflg); 

    int msgrcv(int msqid, void *msg_ptr, size_t msg_sz, long int msgtype, int msgflg); 

    int msgsnd(int msqid, const void *msg_ptr, size_t msg_sz, int msgflg)

    3.线程同步

    互斥锁+条件变量

     

     

    读写锁(区分读写请求)--->文件锁(进一步细分被锁对象的粒度)

  • 相关阅读:
    leetcode 70 Climbing Stairs
    leetcode 203 Remove Linked List Elements
    【HMM】
    【设计总结】
    【docker】导出导入容器
    【设计工具】样机图
    【设计细节】apple sound
    【产品分析】盒马生鲜 套路
    【喂到嘴经济】这个词有点意思
    【需求分类】KANO模型
  • 原文地址:https://www.cnblogs.com/cherishui/p/3574962.html
Copyright © 2011-2022 走看看