linux同步
2024-10-18 16:54:26
1. 内核同步
主要是防止多核处理器同时访问修改某段代码,或者在对设备驱动程序进行临界区的保护。
- 1 .互斥量
- 头文件 #include<linux/mutex.h>
- 初始化方法:
- 静态初始化 DEFINE_MUTEX(name), 动态初始化void mutex_init(struct mutex *lock);
- 使用方法:
- void mutex_lock(struct mutex *lock) //尝试着得到互斥量,得不到则进入睡眠,睡眠期间,不能被中断
- 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.线程同步
互斥锁+条件变量
读写锁(区分读写请求)--->文件锁(进一步细分被锁对象的粒度)
最新文章
- 【GWAS文献】基于GWAS与群体进化分析挖掘大豆相关基因
- 退出系统时跳出frame框架
- python load mat 并按变量名赋值
- Circle(codevs 3134)
- jquery的prop()和attr()
- Telnet连接Win7系统被拒绝的原因及解决方法
- 【转载】解析提高PHP执行效率的50个技巧
- HDOJ 2026 首字母变大写
- Python同时向控制台和文件输出日志logging的方法 Python logging模块详解
- ZOJ 2412 Farm Irrigation(DFS 条件通讯块)
- 解决vagrant up启动失败,停留在Booting VM...过程的方法
- vTPM环境部署(ubuntu)
- 什么是 stack?- 每天5分钟玩转 Docker 容器技术(111)
- [squid] kid1| ERROR: No forward-proxy ports configured.
- 7.地图随机装饰,与转化过程补充,与ai的设计思路
- USB HID设备报告描述符详解(转)
- nginx安装以及调优
- ReentrantLock实现原理分析
- linux-shell-变量参数
- gulp-px2rem-plugin 插件的一个小bug