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