读书人

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

发布时间: 2012-02-14 19:19:19 作者: rapoo

多线程中无法获得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; //改成引用,就是给这个变量取个别名

读书人网 >VC/MFC

热点推荐