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.线程同步

    互斥锁+条件变量

     

     

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

  • 相关阅读:
    spring中@value注解需要注意
    mysql创建utf-8字符集数据库
    Access denied for user 'root'@'localhost' (using password:YES) 解决方案[转]
    MySql 5.7.20安装
    Shiro 登录认证源码详解
    为什么说Java匿名内部类是残缺的闭包
    Java中的闭包之实例一
    使用Eclipse的Working Set管理项目
    glibc下载安装
    Struts2 整合 Hibernate 框架
  • 原文地址:https://www.cnblogs.com/cherishui/p/3574962.html
Copyright © 2011-2022 走看看