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
|
-- 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