章节列表

邮箱的清空与删除

2018-03-12 11:36:28 +0000 李述铜

这节课时学习邮箱的另外两个接口:清空和删除。

清空指的是将邮箱中消息缓冲区的所有消息全部清除掉。删除指的是删除整个邮箱。

这两个操作都比较容易理解实现!

主要内容

清空

在实现清空操作时,只是简单地重置了邮箱的读索引和写索引、消息数为初始状态。

注意:此处并没处理原本已经在消息缓冲区中的消息。邮箱没有能力得知如何对这些消息如何处理,所以只好简单的置之不理。例如:

  • 邮箱无法得知消息存储区是如何分配的。有可能是malloc()分配、也有可能是静态存储区中创建,再者可能是消息只是一个数值,转换成消息指针发送。邮箱无法得知这些信息

  • 邮箱无法得知消息是否还会继续使用。清空邮箱,并不意味着一定要回收所有消息,这些消息任务虽然已经发送至邮箱,但任务可能还会对其进行控制。如果邮箱自做主张将其释放,那么还得知道是否需要、如何通知、通知哪些任务。

综上所述,最简单的方法是将邮箱中已有的消息交给程序员处理。既然他调了清空操作,那么他就应该负责对这些消息进行管理。对于静态存储区中创建的消息或者转换成消息指针发送的消息,可以不用处理,对系统并没有什么影响。

删除

删除邮箱时,只是简单的移除了等待队列中的所有任务。

对于缓冲区中已有消息如何处理,存在着同清空操作同样的问题。所以具体实现时,也没有做什么处理。

邮箱删除后,同样也未设置任何已删除标记。如果你有兴趣,欢迎自行添加!

重点难点

注意事项

常见问题