首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

多线程中无法获得queue解决办法

2012-02-14 
多线程中无法获得queue#pragma once#include Packet.h#include queuetypedef std::queueCPacket Pac

多线程中无法获得queue
#pragma once

#include "Packet.h"
#include <queue>

typedef std::queue<CPacket> PacketQueue;//CPacket是说我定义的类

class CThreadParam
{
public:
CThreadParam(void);
~CThreadParam(void);
//时延统计标志
BOOL m_bdelay;
//吞吐量统计标示
BOOL m_bthruput;
// 包队列
PacketQueue m_ptQueue;
};






UINT __cdecl CStartMdlDlg::sink(LPVOID pParam)
{
Sleep(1);
PacketQueue pckQ = ((CThreadParam *)pParam)->m_ptQueue;/*此处出错,断点运行时等号右边是正确的,等号左边pckQ没有得到正确数据*/

CPacket pt;
pt = pckQ.front();

return 0;
}






[解决办法]
PacketQueue pckQ = ((CThreadParam *)pParam)->m_ptQueue;
--》
PacketQueue& pckQ = ((CThreadParam *)pParam)->m_ptQueue; //改成引用,就是给这个变量取个别名

热点排行