code cool 2021-08-09 15:59 采纳率: 0%
浏览 6
已结题

线程函数在等待事件信号之前申请空间,然后一直等待事件触发,但是我不触发它,现在要关闭终止线程,资源如何释?

线程函数执行到中途需等待信号执行另一操作,这时没有等到信号,被(flag)return结束了,到不了delete,求各位给个方案。
unsigned __stdcall CPrintThreadDlg::ThreadProcP(void *lparam)
{
    CPrintThreadDlg*pthis = (CPrintThreadDlg*)lparam;    
    
    while (pthis->m_bFlagQuit)
    {
        int *p = new int;
        
            WaitForSingleObject(pthis->m_hEvent, INFINITE);

            while (m_bFlagQuit&&pthis->m_Goods <= 1000)
            {
                //等到信号生产产品
                //InterlockedIncrement((LPLONG)pthis->m_Goods);
                //WaitForSingleObject(pthis->m_hMutex,INFINITE);
                pthis->m_Goods++;
                //ReleaseMutex(pthis->m_hMutex);
                //将产品加入到队列
                EnterCriticalSection(&pthis->m_cs);
                //pthis->m_Goods++;
                pthis->m_qu.push(pthis->m_Goods);
                LeaveCriticalSection(&pthis->m_cs);
                //给消费者释放信号
                ReleaseSemaphore(pthis->m_hSemaphore, 1, NULL);
            }                                
        delete p;
        p = NULL;                                
    }    
    
    return 0;
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 8月17日
    • 创建了问题 8月9日

    悬赏问题

    • ¥15 软件工程用例图的建立(相关搜索:软件工程用例图|画图)
    • ¥15 如何在arcgis中导出拓扑关系表
    • ¥15 处理数据集文本挖掘代码
    • ¥15 matlab2017
    • ¥15 在vxWorks下TCP/IP编程,总是connect()报错,连接服务器失败: errno = 0x41
    • ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
    • ¥20 求:怎么实现qt与pcie通信
    • ¥50 前后端数据顺序不一致问题,如何解决?(相关搜索:数据结构)
    • ¥15 基于蒙特卡罗法的中介效应点估计代码
    • ¥15 罗技G293和UE5.3