游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1360|回复: 0

[求助]我使用了queue作为2个线程间的队列,为什么push会随

[复制链接]

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2007-12-13 13:13:00 | 显示全部楼层 |阅读模式
如题,使用了queue,2个线程一个push,一个pop。使用了互斥量。但是程序运行中

会随机在push的时候出错,而且出错时间比较快。经过调试,发现应该是在queue push

分配内存的时候出错了。

我的pop与push函数代码如下:
Pop函数:
        void MsgProcRun()
        {
                DWORD dwWaitResult = WaitForSingleObject( hMutex, 100L);
                if( dwWaitResult == WAIT_OBJECT_0 )
                {
                        if( !MsgStack->isEmpty() )
                        {
                                DXInput::MsgStackNode MsgNode = MsgStack-&gtop();
                                MsgProc( MsgNode );
                        }
                        ReleaseMutex(hMutex);
                }
        }
Push函数:
int MsgPro( DXInput::StackCellForMessageAndType MsgNode )
{
        DWORD dwWaitResult = WaitForSingleObject( hMutex, 100L);
        if( dwWaitResult == WAIT_OBJECT_0 )
        {
                if( MsgStack == NULL ) return -1;
                MsgStack->Push( MsgNode );
                ReleaseMutex(hMutex);
        }
        return 1;
}
程序里面使用了一些自定义类型,包括queue稍微做了下封装。大家不用理会。请高手帮我看看问题出在哪里啊?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-17 17:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表