嵌入式linux系统开发
记录学习linux系统开发中的知识点。
胆小鬼2.0
人生是场修行
展开
-
生产者消费者模型(条件变量+互斥锁)
生产者消费者模型线程同步典型的案例即为生产者消费者模型,而借助条件变量来实现这一模型,是比较常见的一种方法。假定有两个线程,一个模拟生产者行为,一个模拟消费者行为。两个线程同时操作一个共享资源,生产者向其中添加产品,消费者从中消费掉产品。下面展示一些代码片段:#include <stdio.h>#include <unistd.h>#include <pthread.h>#include <stdlib.h>#include <string原创 2021-03-21 23:51:31 · 435 阅读 · 2 评论 -
哲学家就餐(避免死锁)(多进程版)
哲学家就餐(避免死锁)(多进程版)哲学家就餐利用信号量在多进程之间实现下面展示一些代码片段#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/wait.h>#include <sys/types.h>#include <sys/mman.h>#include <semaphore.h>int main(){原创 2021-02-23 21:45:53 · 270 阅读 · 0 评论 -
哲学家就餐问题(如何避免死锁)(多线程版)
哲学家就餐问题多线程编程中,常常会遇到线程间访问共享资源的问题,如果处理不当则会发生死锁,某一个线程可能永远访问不到共享资源。为了避免死锁的发生,提出哲学家就餐问题。下面展示一些代码片段#include <stdio.h>#include <unistd.h>#include <pthread.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#inc原创 2021-02-22 22:03:14 · 3848 阅读 · 12 评论 -
利用SIGCHLD信号回收子进程
子进程执行结束之后,父进程如果不对其进行回收,子进程就会变为僵尸进程。父进程可以通过调用wait()函数和waitpid()函数去回收子进程.由于子进程结束时会发送SIGCHLD信号给父进程,不过此信号的默认动作为忽略,我们可以通过系统函数sigaction()设置信号捕捉,在信号捕捉函数中去回收子进程。信号捕捉函数中回收子进程的方法:waitpid函数下面展示一些 代码片#include <stdio.h>#include <unistd.h>#include &l原创 2021-01-28 22:42:05 · 2167 阅读 · 3 评论