CWinThread 部分代码

Stella981
• 阅读 582
CWinThread* AFXAPI AfxGetThread()
{
    // check for current thread in module thread state
    AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
    CWinThread* pThread = pState->m_pCurrentWinThread;
    return pThread;
}

AFX_MODULE_THREAD_STATE* AFXAPI AfxGetModuleThreadState()
{
    AFX_MODULE_THREAD_STATE* pResult=AfxGetModuleState()->m_thread.GetData();
    ENSURE(pResult != NULL);
    return pResult;
}

AFX_MODULE_STATE* AFXAPI AfxGetModuleState()
{
    _AFX_THREAD_STATE* pState = _afxThreadState;
    ENSURE(pState);
    AFX_MODULE_STATE* pResult;
    if (pState->m_pModuleState != NULL)
    {
        // thread state's module state serves as override
        pResult = pState->m_pModuleState;
    }
    else
    {
        // otherwise, use global app state
        pResult = _afxBaseModuleState.GetData();
    }
    ENSURE(pResult != NULL);
    return pResult;
}

AFX_INLINE TYPE* GetData()
    {
        TYPE* pData = (TYPE*)CProcessLocalObject::GetData(&CreateObject);
        ENSURE(pData != NULL);
        return pData;
    }

CNoTrackObject* CProcessLocalObject::GetData(CNoTrackObject* (AFXAPI* pfnCreateObject)())
{
    if (m_pObject == NULL)
    {
        AfxLockGlobals(CRIT_PROCESSLOCAL);
        TRY
        {
            if (m_pObject == NULL)
                m_pObject = (*pfnCreateObject)();
        }
        CATCH_ALL(e)
        {
            AfxUnlockGlobals(CRIT_PROCESSLOCAL);
            THROW_LAST();
        }
        END_CATCH_ALL
        AfxUnlockGlobals(CRIT_PROCESSLOCAL);
    }
    return m_pObject;
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
java 多线程
创建线程的4种方式1、继承Thread类,复写run方法,run方法中为线程需要执行的逻辑部分,而启动线程调用start方法。小示例见代码,通过Thread.currentThread().getName()可以获得当前线程名称publicclassMyThreadextendsThread{private
Java修道之路,问鼎巅峰,我辈代码修仙法力齐天
<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav
Wesley13 Wesley13
3年前
java死锁分析
1编写死锁案列,运行packagecom.thread.thread.deadLock;publicclassDeadLockTest{publicstaticStringobjA"strA";publicstaticStringobjB"strB";
Wesley13 Wesley13
3年前
Java多线程基础
(1)传统使用类Thread和接口Runnable实现 1\.在Thread子类覆盖的run方法中编写运行代码方式一 newThread(){@Overridepublicvoidrun(){while(true){try{Thread.sleep(2
Wesley13 Wesley13
3年前
Mysql优化操作学习纪录
SHOWSTATUS;FLUSHSTATUS;查看当前连接数SHOWSTATUSLIKE'Thread\_%';Thread\_cached:被缓存的线程的个数Thread\_running:处于激活状态的线程的个数Thread\_connected:当前连接的线程的个数Thread\_created:总共被创建
Wesley13 Wesley13
3年前
Java多线程 简记
1、实现多线程方法继承Thread类或者实现Runnable接口2、Thread 和Runnable区别实现Runnable接口比继承Thread类所具有的优势:1):适合多个相同的程序代码的线程去处理同一个资源2):可以避免java中的单继承的限制3):增加程序的健壮性,代码可以被多个
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这