CWinThread 部分代码

1CWinThread* AFXAPI AfxGetThread() 2{ 3 // check for current thread in module thread state 4 AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState(); 5 CWinThread* pThread = pState->m_pCurrentWinThread; 6 return pThread; 7} 8 9AFX_MODULE_THREAD_STATE* AFXAPI AfxGetModuleThreadState() 10{ 11 AFX_MODULE_THREAD_STATE* pResult=AfxGetModuleState()->m_thread.GetData(); 12 ENSURE(pResult != NULL); 13 return pResult; 14} 15 16AFX_MODULE_STATE* AFXAPI AfxGetModuleState() 17{ 18 _AFX_THREAD_STATE* pState = _afxThreadState; 19 ENSURE(pState); 20 AFX_MODULE_STATE* pResult; 21 if (pState->m_pModuleState != NULL) 22 { 23 // thread state's module state serves as override 24 pResult = pState->m_pModuleState; 25 } 26 else 27 { 28 // otherwise, use global app state 29 pResult = _afxBaseModuleState.GetData(); 30 } 31 ENSURE(pResult != NULL); 32 return pResult; 33} 34 35AFX_INLINE TYPE* GetData() 36 { 37 TYPE* pData = (TYPE*)CProcessLocalObject::GetData(&CreateObject); 38 ENSURE(pData != NULL); 39 return pData; 40 } 41 42CNoTrackObject* CProcessLocalObject::GetData(CNoTrackObject* (AFXAPI* pfnCreateObject)()) 43{ 44 if (m_pObject == NULL) 45 { 46 AfxLockGlobals(CRIT_PROCESSLOCAL); 47 TRY 48 { 49 if (m_pObject == NULL) 50 m_pObject = (*pfnCreateObject)(); 51 } 52 CATCH_ALL(e) 53 { 54 AfxUnlockGlobals(CRIT_PROCESSLOCAL); 55 THROW_LAST(); 56 } 57 END_CATCH_ALL 58 AfxUnlockGlobals(CRIT_PROCESSLOCAL); 59 } 60 return m_pObject; 61}
点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java 多线程

创建线程的4种方式1、继承Thread类,复写run方法,run方法中为线程需要执行的逻辑部分,而启动线程调用start方法。小示例见代码,通过Thread.currentThread().getName()可以获得当前线程名称publicclassMyThreadextendsThread{private

java死锁分析

1编写死锁案列,运行packagecom.thread.thread.deadLock;publicclassDeadLockTest{publicstaticStringobjA"strA";publicstaticStringobjB"strB";

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )