commit 2025-09-28 02:42 edit a bit ZCppMain/ZMainHead.H
This commit is contained in:
@ -1067,6 +1067,94 @@ namespace ZNsMain
|
||||
|
||||
-- 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 의 상속 클래스에 접근할 수 있다.
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user