章节列表

邮箱-练习题

2018-05-29 03:39:42 +0000 李述铜

为提升学习效果,建议在阅读完题目后先自行尝试解答。

等待解答完毕之后,再与参考答案对照。参考答案并不一定准确,欢迎你提供自己不同的答案!

思考题一(答案获取码:0916)

在应用中初始化了邮箱mbox1,其最大可容纳的消息数量为10。假设此时没有任务等待,此时依次向邮箱消息缓存队列尾写入5个消息,之后有1个任务从中取出1个消息。请问此时mbox1结构中的read索引值为__, write索引值为。接着再向邮箱按tMBOXSendFront方式写入3个消息。请问此时的read索引值为, write索引值为__?

思考题二(答案获取码:7263)

目前的邮箱实现中,邮箱不负责消息体的内存分配与释放,只负责管理消息指针。任务需要自行从某处获得消息体的内存空间,然后将该消息发送给邮箱。任务从邮箱中获取消息后,需要自行释放存储空间。

那么,能不能设计一种新的邮箱结构,这种结构结合了邮箱和存储块二者的特点。它能够为任务提供消息存储区的分配与回收接口,例如tMboxAllocMsgBody()和tMboxFreeMsgBody()。

请画出数据结构的实现示意图。可手绘拍照贴在此。

请简要说明tMboxAllocMsgBody()和tMboxFreeMsgBody()的实现方式(不用写代码)。

有兴趣的话,可以写写结合tMboxWait()/tMboxNotify()怎么用。(不算分)

答案获取

练习题的答案,请关注微信公众号i01ketang 01课堂,发送相应的答案获取码,即可获得。