上海交通大学网络教育学院--计算机专业--操作系统作业---操作系统实验报告_进程与进程通信
在前面的例子中就是允许插队,这样会导致超过允许服务的进程上限
5.2、 共享内存实现邮箱的数据结构
由于共享内存的方法不直接提供队列功能故采用循环队列思想模拟缓冲区,下面是
共享内存的头部,用来存储索引信息
struct
{
DWORD MsgSize; //单个消息大小:字节数
int MsgMaxCount; //消息的总数
int MsgNum; //消息的个数
int ReadIndex; //可读消息索引
int WriteIndex; //可写消息索引
};
5.3、 “实时”显示内容的处理与内存泄漏
这个显示消息的函数每隔50ms执行一次,所以实际上是是查询方式来实现实时显
示
在此模式下可以发现一些被人遗忘的内存释放,我在实现这个函数时候发现进程占
用内存和执行时间成正比,最后才发现内存泄漏的地方,尤其是读取共享内存的指针特别占内存
5.4、 相关代码
5.4.1、 声明类
1) enum operation {SpaceEnum,SendEnum,ReceiveEnum,MutexEnum};
2) typedef struct _MSGQ_HEADER
3) {
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16) DWORD MsgSize; //单个消息大小:字节数 int MsgMaxCount; //消息的总数 int MsgNum; //消息的个数 int ReadIndex; //可读消息索引 int WriteIndex; //可写消息索引 }MSGQ_HEADER, *PMSGQ_HEADER; class CMsgQ:public QDialog { public: CMsgQ(){} BOOL Create(LPCTSTR **strname,int nowProcess,int
*MsgMaxCount,DWORD *MsgSize);
17)
maxProcess,int
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统实验报告_进程与进程通信(4)在线全文阅读。
相关推荐: