首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

使用SYSTEM V队列,有关消息资源释放的有关问题

2012-04-10 
使用SYSTEM V队列,有关消息资源释放的问题使用SYSTEMV消息队列中,为避免资源释放,是否每个消息的构造需要

使用SYSTEM V队列,有关消息资源释放的问题
使用SYSTEM   V消息队列中,为避免资源释放,是否每个消息的构造需要全局的吗?资源是否会自动释放?

例如   :
V_SendMsg()
{
        MSG_T   stSndMsg;     /*   需要准备发送的消息   */
        初始化stSndMsg;
        发送stSndMsg;
        msgsnd(...stSndMsg....);

}

V_RcvMsg()
{
        MSG_T   *pstRcvMsg;           /*   准备要接收消息的指针   */
        msgrcv(...pstRcvMsg.....);
       
}

问题:

V_SendMsg()将消息发送到队列中,是否将要发送的消息的一份拷贝发送至队列中呢?还是就将那一段内存直接发送至队列中?

V_RcvMsg()接收消息后,是否会自动释放资源?还是由我们自己主动释放呢?

[解决办法]
V_SendMsg()将消息发送到队列中,是否将要发送的消息的一份拷贝发送至队列中呢?还是就将那一段内存直接发送至队列中?
===
拷贝

V_RcvMsg()接收消息后,是否会自动释放资源?还是由我们自己主动释放呢?
===
自己申请的内存当然要自己释放,如果消息长度不是太大,建议用结构代替指针
V_RcvMsg()
{
MSG_T stRcvMsg; /* 准备要接收消息的结构 */
msgrcv(...stRcvMsg.....);

}
这样可以减少指针出错的概率。
当然,如果消息还需要尽一步的处理,指针是较好的选择,但是要坚持谁申请,谁释放的原则。

[解决办法]
队列中资源的由系统处理, 队列外的动态资源你自己处理.

热点排行