commit 2025-09-28 02:42 edit a bit ZCppMain/ZMainHead.H

This commit is contained in:
2025-09-28 02:42:07 +09:00
parent a8e6127a0f
commit 6c4c4a86e1

View File

@ -1067,6 +1067,94 @@ namespace ZNsMain
-- 2012-09-20 09:46:00 -- 2012-09-20 09:46:00
■ 해당 코드는 대충 이렇다.-- 2025-09-28 02:41
template< typename TWork ,
typename TWorkExec , // 작업(TWork)에 대하여 어떤 처리를 하는 클래스
typename TWorkArg =const TWork& ,
typename TBarrier =std::CBarrier_T<> , // 작업 쓰레드의 시작 및 종료 대기 barrier
typename TSyncWait =std::CThreadSemaphore,
typename TSyncExec =std::CDefLockEasy ,
typename TWorkList =NsCPP::CObjList<TWork,TWorkArg> , // 작업 큐 컨테이너
typename TTypeBase =NsIFace::CAllocWork_BASE_T<TWork>,
typename TFetchWork=TWorkList , // 작업 큐에서 작업을 가져오는 컨테이너.
typename TTypeCRTP =std::NsType::CTypeCRTP2_T< NsIFace::ICtrlAllocWork, NsIFace::ICtrlAllocWork >
>
class CTypeCtrlAllocWork_T //////////////////////////////////////////////////////////////////////////////////
{
public:
class CThread ;
class CBaseClass;
typedef TWork CWork ;
typedef TWorkArg CWorkArg ;
typedef TWorkExec CWorkExec ;
typedef TBarrier CBarrier ;
typedef TSyncWait CSyncWait ;
typedef TSyncExec CSyncExec ;
typedef TWorkList CWorkList ;
typedef TFetchWork CFetchWork;
typedef TTypeCRTP CTypeCRTP ;
typedef typename TWorkList::TypeAlloc CAlloc ;
typedef std::CAutoKey_T<CSyncExec> CAutoKey ;
typedef NsCPP::CObjList
<
CThread ,
const CThread&,
CAlloc
> CThreadList;
typedef typename CThreadList::CLink CThreadLink;
#define _CAllocWork_BASE_ std::CAllocWork_T< \
CWork , \
CWorkArg , \
CSyncWait , \
CSyncExec , \
CWorkList , \
CThread , \
CBaseClass , \
std::NsType::CTypeCRTP_T<CAllocWork, true> >
class CAllocWork : public _CAllocWork_BASE_
{
// some code
}
};
template<typename TTypeCtrlAllocWork>
class CCtrlAllocWork_T : protected TTypeCtrlAllocWork::CSyncKey ,
protected TTypeCtrlAllocWork::CAllocWork,
protected TTypeCtrlAllocWork::CTypeCRTP::TypeBase
{
public :
enum{EMaxThreadCnt=1}; typedef NsEnum::EThreadPoolStep EPoolStep;
public :
typedef typename TTypeCtrlAllocWork::CWork CWork ;
typedef typename TTypeCtrlAllocWork::CWorkArg CWorkArg ;
typedef typename TTypeCtrlAllocWork::CWorkExec CWorkExec ;
typedef typename TTypeCtrlAllocWork::CThread CThread ;
typedef typename TTypeCtrlAllocWork::CSyncKey CSyncKey ;
typedef typename TTypeCtrlAllocWork::CSyncExec CSyncExec ;
typedef typename TTypeCtrlAllocWork::CAutoKey CAutoKey ;
typedef typename TTypeCtrlAllocWork::CAllocWork CAllocWork ;
typedef typename TTypeCtrlAllocWork::CBaseClass CBaseClass ;
typedef typename TTypeCtrlAllocWork::CWorkList CWorkList ;
typedef typename TTypeCtrlAllocWork::CFetchWork CFetchWork ;
typedef typename TTypeCtrlAllocWork::CThreadList CThreadList;
typedef typename TTypeCtrlAllocWork::CThreadLink CThreadLink;
typedef typename TTypeCtrlAllocWork::CTypeCRTP CTypeCRTP ;
// 이후 아래 코드로
//
// typedef typename CTypeCRTP::TypeData CCtrlAllocWorkEx;
//
// CCtrlAllocWork_T 의 상속 클래스에 접근할 수 있다.
}
//////////////////////////////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////////////////////////////*/