windows和linux进程间与线程间通信

来源:互联网 发布:linux书籍 编辑:程序博客网 时间:2024/05/15 06:50

来源自我的博客

http://www.yingzinanfei.com/2017/02/17/windowshelinuxjinchengjianyuxianchengjiantongxin/

  • Linux进程间通信:管道、信号、消息队列、共享内存、信号量、套接字(socket)
  • Linux线程间通信:互斥量(mutex),信号量,条件变量
  • Windows进程间通信:管道、消息队列、共享内存、信号量 (semaphore) 、套接字(socket)
  • Windows线程间通信:互斥量(mutex),信号量(semaphore)、临界区(critical section)、事件(event)

各通信方式含义

  1. 管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。
  2. 命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。
  3. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。
  4. 消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点
  5. 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
  6. 内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。
  7. 信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
  8. 套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇牙疼耳朵疼怎么办 耳机戴的耳朵疼怎么办 擤鼻涕左耳朵疼怎么办 擤完鼻涕耳朵疼怎么办 五岁儿童耳朵疼怎么办 耳朵里面长了个硬包怎么办 耳朵里有耳屎响怎么办 耳屎粘在耳膜上怎么办 小孩脖子上有淋巴结怎么办 大腿内侧的筋疼怎么办 大腿内侧磨的疼怎么办 孕晚期大腿根疼怎么办 吞口水耳朵会响怎么办 耳朵里面老痒该怎么办 牙疼头疼耳朵疼怎么办 耳朵里流水还疼怎么办 单侧耳朵里面疼怎么办 打到睾丸很疼怎么办 大拇手指关节疼怎么办 早上醒来耳朵嗡嗡响怎么办 两个月宝宝起湿疹怎么办 运动时耳朵闷堵怎么办 刚打的耳洞红肿怎么办 耳洞好了又肿了怎么办 耳洞发炎流血了怎么办 脸上出油怎么办小窍门 耳洞发炎化脓了怎么办 狗狗耳朵化脓了怎么办 狗狗耳朵破了怎么办 泰迪肛门腺发炎怎么办 狗狗肛门腺发炎怎么办 狗狗耳朵受伤了怎么办 狗狗的耳朵发热怎么办 头疼带的耳朵疼怎么办 戴眼镜压耳朵疼怎么办 偏头神经跳疼怎么办 脸消肿后有硬块怎么办 拔完智齿好疼怎么办 补过的牙裂了怎么办 补牙后吃冷热疼怎么办 假体下巴肿疼怎么办