
linux多任务间通信和同步
求佛_ce123
专注于嵌入式软件开发
展开
-
Linux下多任务间通信和同步-概述
Linux下进程间通信-概述Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的集合System V IPC(贝尔实验室)和socket的进程间通信机制(BSD)的优势.Unix进程间通信(IPC)方式包括管道,FIFO以及信号.System V进程间通信(IPC)包括System V消息队列,System V信号量以及System V共享内存区.Posix 进程间通信(IP原创 2013-10-07 10:16:49 · 3906 阅读 · 4 评论 -
Linux下多任务间通信和同步-互斥锁
Linux下多任务间通信和同步-互斥锁嵌入式开发交流群280352802,欢迎加入!概述 互斥锁(Mutex)是一种简单的通过加锁的方法来控制对共享资源的存取,一般用于解决线程间资源访问的唯一性问题. 互斥锁其实很简单,它只有两种状态:上锁和解锁.在同一时刻只能有一个线程掌握某个互斥的锁,拥有上锁状态的线程能够对共享资源进行操作.若其他线程希望对一个已经上了锁的互斥锁上锁,则该线程就会挂起,直到上原创 2013-11-27 08:51:14 · 5883 阅读 · 3 评论 -
Linux下多任务间通信和同步-POSIX信号量
Linux下多任务间通信和同步-POSIX信号量嵌入式开发交流群280352802,欢迎加入! POSIX信号量是另一种信号量的实现.它的定义和功能有System V信号量基本一样,不同的是这组信号量函数的名字已“sem_”开头.基本的系统该调用有四个:sem_init(),sem_wait(),sem_post()和sem_destory().系统调用sem_init() 该系统该调用的作用是对原创 2013-11-26 10:53:37 · 3243 阅读 · 0 评论 -
Linux下多任务间通信和同步-条件变量
Linux下多任务间通信和同步-条件变量嵌入式开发交流群280352802,欢迎加入!概述 互斥锁的一个明显缺点是它只有两种状态:锁定和非锁定.而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法解决了互斥锁的不足,它常此互斥锁一起使用.使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化.一旦其他的某个线程改变了条件变量,它将通知相应的条件变量唤醒一原创 2013-11-26 11:33:27 · 4601 阅读 · 0 评论 -
Linux下多任务间通信和同步-mmap共享内存
Linux下进程间通信和同步-共享内存简介 共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝.为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间.进程就可以直接读写这一内存区而不需要进行数据的拷贝,从而大大提高的效率.由于多个进程共享一段内存,因此也需要依靠某种同步机制,如互斥锁和信号量等.共享内存实现的步骤创建原创 2013-10-10 21:44:20 · 10783 阅读 · 4 评论 -
错误: ‘sem_union’的存储大小未知
错误: ‘sem_union’的存储大小未知问题原因:在新版2.6内核中关于union sem_union 这个联合体已经被注释了,需要自己写这个联合体.解决方案:在C文件中先定义:union semun { int val; struct semid_ds *buf; unsigned short *array;}sem_union;随后编译时它就能找到预先定义好的sem_原创 2013-10-16 16:44:11 · 4621 阅读 · 1 评论 -
Linux下多任务间通信和同步-System V信号量
Linux下多任务间通信和同步-System V信号量嵌入式开发交流群280352802,欢迎加入!一.简介 信号量与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制.相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志.出了用于访问控制外,还可用于进程同步.信号量有以下两种类型:二值信号量:最简单的信号量形式,信号量的值只能取0或1;计算信原创 2013-10-16 16:42:35 · 3560 阅读 · 0 评论 -
Linux下多任务间通信和同步-System V共享内存
Linux下进程间通信和同步-System V共享内存共享内存实现的步骤创建共享内存,这里用到的函数是shmget,也就是从内存中获得一段共享内存区域;映射共享内存,也就是把这段创建的共享内存映射到具体的进程空间中去,这里使用的函数是shmat;到这里,就可以使用这段共享内存了,也就是可以使用不带缓冲的I/O读写命令对其进行操作;撤销映射的操作,其函数为shmdt.shmget函数语法:shmat原创 2013-10-15 13:42:25 · 5295 阅读 · 0 评论 -
Linux下多任务间通信和同步-消息队列
Linux下进程间通信和同步-消息队列 消息队列就是一些消息的列表.用户可以在消息队列中添加消息和读取消息等.从这点上看,消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势.同时,这些消息又是存在于内核中的,由"队列ID"来标识. 消息队列的实现包括创建或打开消息队列,添加消息,读取消息和控制消息队列这四种操作:创建或打开消息队列使用的函数是msgget,这里原创 2013-10-10 07:12:39 · 8170 阅读 · 2 评论 -
Linux下多任务间通信和同步-信号
Linux下进程间通信-信号概述 信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式.信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。它可以在任何时候发给某一进程,而无需知道该进程的状态.如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其原创 2013-10-08 18:00:25 · 4848 阅读 · 3 评论 -
Linux下多任务间通信和同步-管道
Linux下进程间通信-管道通信管道简介 Linux的管道主要包括两种:无名管道和有名管道.无名管道特点它只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程之间).它是一个半双工的通信模式,具有固定的读端和写端.管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read(),write()等函数.但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中.有名管道特原创 2013-10-08 10:34:02 · 6499 阅读 · 3 评论 -
【博文汇总】linux下多任务编程
【博文汇总】linux下多任务编程 [Linux的多任务编程-基本概念]介绍了多任务处理的基本知识,主要讲解了基于进程和线程实现多任务处理的不同特点和区别.基于进程的多任务编程 [Linux的多任务编程-进程]介绍了进程的基本概念,创建,中止和退出等,同时也介绍了fork,vfork函数和进程间文件描述符的共享. [深入浅出进程与线程的基本概念]进程和线程是操作系统的基本概念,但是它们比较抽象,不原创 2013-11-27 08:52:13 · 3367 阅读 · 2 评论