操作系统
文章平均质量分 83
靓仔且落泪
这个作者很懒,什么都没留下…
展开
-
条件变量和互斥锁的使用
一 条件变量前面的文章已经讲过互斥锁的使用规则,接下来,我们再来讲一下条件变量。条件变量其实就是一种通知机制,当某个共享数据到达某个值的时候,通知等待该共享数据到达该值的线程来处理该共享数据。条件变量一般是用于让生产者线程和消费者线程之间以及消费者线程之间互斥的访问临界资源(临界资源指的是同时只允许一个线程访问的共享资源)。条件变量的使用一般是需要结合互斥锁来进行(条件变量相关函数的输入参数就是互斥锁),从而使得各个线程能够互斥的访问该临界资源。二 条件变量的使用条件变量在pthread原创 2022-05-24 11:52:31 · 2024 阅读 · 0 评论 -
互斥锁的含义及其使用
一 互斥锁的含义互斥锁其实就相当于一个初值为1的二元信号量,互斥锁只有两种状态,要么解锁,要么上锁。互斥锁一般用于保护关键代码,从而实现互斥访问。二 互斥锁的使用互斥锁相关函数在pthread.h头文件中声明。2.1 互斥锁的创建int pthread_mutex_init(pthread_mutex_t*mutex,const pthread_mutexattr_t*mutexattr);函数功能:用于初始化一个互斥锁。函数参数:mutexattr指针用于设置互斥锁的属性,不原创 2022-05-24 00:26:49 · 2941 阅读 · 0 评论 -
POSIX信号量
一 介绍由于线程和进程一样,也需要考虑同步操作,线程的同步操作主要有POSIX信号量,互斥锁以及条件变量。其中,POSIX信号量和之前介绍的IPC信号量一样,具有相同的功能。接下来,我们直入主题,具体来看看POSIX信号量如何使用吧!二 POSIX信号量的相关函数POSIX信号量相关函数在semaphore.h头文件当中。2.1 信号量的初始化int sem_init(sem_t*sem,int pshared,unsigned int value);函数功能:初始化一个信号量,并原创 2022-05-24 00:58:25 · 291 阅读 · 0 评论 -
进程的IPC操作 之 消息队列
一 消息队列消息队列是一种进程间的通讯的消息队列,能够独立于读端和写段,如果发送或者接收进程终止了,其中的消息也不会消失,并且进程可以按照类型对消息队列进行读写。二 消息队列的相关函数消息队列的函数定义在sys/msg.h头文件中。2.1 消息队列的创建int msgget(key_t key, int msgflg);函数功能:主要是在内核创建一个消息队列。函数参数:1.key:主要是用于全局表示这个IPC资源:消息队列的唯一性;2.msgflg:和信号量semget原创 2022-05-17 21:20:28 · 711 阅读 · 0 评论 -
进程的IPC操作 之 信号量
一 信号量的定义信号量的出现,主要是为了解决进程之间对于临界资源的独占式访问。信号量可以满足对于改临界资源的访问只能有一个进程。二 信号量的操作LINUX的信号量API都定义在sys/sem.h头文件中:2.1 信号量的创建int semget(key_t key, int num_sems, int sem_flags);函数功能:创建或者获取由键值key标识的信号量集合。函数参数:key:主要是用于在全局唯一的表示一个信号量集合,相当于全局的文件名一样。num_se原创 2022-05-14 21:29:16 · 952 阅读 · 0 评论 -
进程的IPC操作 之 共享内存
一 共享内存的作用共享内存主要是用来实现进程间通讯的一种机制,只不过,需要进程间互斥的访问这段内存,因此需要使用信号量等锁机制来对共享内存进行访问。二 共享内存的实现共享内存的实现主要由两种方式:一种是shm系统调用;一种是mmap实现共享(因为mmap也可以实现私有映射)的页面映射。2.1 shm系统调用shm系统调用主要是在sys/shm.h头文件中。2.1.1 共享内存的创建int shmget(key_t key, size_t size, int shmflg);原创 2022-05-15 15:57:57 · 857 阅读 · 0 评论