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

互斥锁+条件变量

 

 

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

posted @ 2014-03-01 13:10  浩天之家  阅读(235)  评论(0编辑  收藏  举报