同步通信

Linux—进程间通信和同步(消息队列)

一笑奈何 提交于 2019-11-27 05:09:59
目录 消息队列 1. 消息缓冲区结构 2. 结构msgid_ds 3. 结构 ipc_perm 4. 内核中的消息队列关系 5. 键值构建ftok()函数 6. 获得消息msgget()函数 7. 发送消息msgsnd()函数 8. 接收消息msgrcv()函数 9. 消息控制msgctl()函数 4. 消息队列的例子 1. 显示消息属性的函数msg_show_attr() 2. 主函数main() 消息队列 消息队列是内核地址空间中的内部链表,通过Linux内核在各个进程之间传递内容 。 消息顺序地发送到消息队列中 ,并以几种不同的方式从队列中获取, 每个消息队列可以用IPC标识符唯一地进行标识 。 内核中的消息队列是通过IPC的标识符来区别的,不同的消息队列之间是相对独立的。每个消息队列中的消息,又构成一个独立的链表。 (进程间通信— IPC( Inter-Process Communication)) 1. 消息缓冲区结构 常用的结构是msgbuf结构 。程序员 可以以这个结构为模板 定义自己的消息结构 。在头文件 <linux/msg.h> 中,它的定义如下: struct msgbuf { long mtype; char mtext[1]; }; 在结构msgbuf中有以下两个成员。 □ mtype : 消息类型 ,以 正数 来表示。 用户可以给某个消息设定一个类型 ,

Java线程间通信

落花浮王杯 提交于 2019-11-27 03:14:30
前言 最近在看《Java多线程核心编程技术》这本书,没几天,但是看了很多章节。书中内容大都以代码为主,作者的想法大概是以代码的形式给读者增加多线程的印象,很多知识点也都以代码的形式展现,所以代码的篇幅占据了很大一部分,重点介绍的知识点也较少,整体偏简单了,我也很快的浏览了几个章节,做了大部分的笔记,其实还是有收获吧,就是感觉偏重基础,过多的代码量减少了总结,而且更深层次的原理性内容没有写出来,有点遗憾,所以后续我打算换一本书继续看。 本篇文章也是根据书中章节的介绍做的一次读书笔记,功能点都较简单,希望后续有机会能够再深入的了解一下这方面的知识点,本次就算抛砖引玉吧。 目标 本篇读书笔记大概介绍了以下几方面的内容: 使用wait/notify实现线程间的通信 生产者/消费者模式的实现 方法join的使用 线程与线程之间不是相互独立的个体,它们彼此之间可以相互通信和协作。 等待 / 通知机制的实现 方法wait()的作用是使当前执行代码的线程进行等待, wait()方法是Object类的方法 ,该方法用来将当前线程置入“预执行队列”中,并且在wait()所在的代码行处停止执行,知道接到通知或被中断为止。 在调用wait()方法之前,线程必须要获得该对象锁 , 即只能在同步方法或者同步块中调用wait()方法 。在执行wait()方法后,当前线程释放锁。在从wait()方法返回前