From e4b9bfffee40a6932d829669478a408e9313c5c7 Mon Sep 17 00:00:00 2001 From: sauron Date: Sat, 4 Oct 2025 08:35:16 +0900 Subject: [PATCH] commit 2025-10-04 08:35 edit a bit ZtCObjUnitList : ZCppMain/ZtCObjList.H --- ZCppMain/ZtCObjList.H | 53 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 3c49dc4..120eb6f 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -3455,7 +3455,7 @@ namespace ZNsMain if(ml_CutUnitCnt<1) { ZCLinkUnit* VP_NewLinkUnit=CreateUnit(); - + VP_NewLinkUnit->ml_UseSize=0; return VP_NewLinkUnit; }/* if(ml_CutUnitCnt<1)*/ @@ -3477,7 +3477,8 @@ namespace ZNsMain ZCLinkUnit* AllocUnitAtHead() { - // AllocUnit() 을 통해 가져온 ZCLinkUnit* 을 '내부 사용 리스트'의 앞에 삽입한다. + // AllocUnit() 을 통해 가져온 ZCLinkUnit* 을 + // '내부 사용 리스트'의 앞에 삽입한다. ZCLinkUnit* VP_NewLinkUnit= AllocUnit(); @@ -3504,7 +3505,8 @@ namespace ZNsMain ZCLinkUnit* AllocUnitAtTail() { - // AllocUnit() 을 통해 가져온 ZCLinkUnit* 을 '내부 사용 리스트'의 뒤에 삽입한다. + // AllocUnit() 을 통해 가져온 ZCLinkUnit* 을 + // '내부 사용 리스트'의 뒤에 삽입한다. ZCLinkUnit* VP_NewLinkUnit= AllocUnit(); @@ -3682,8 +3684,23 @@ namespace ZNsMain template void AddTailInPool( TAllocWork& AR_CAllocWork, TypeData* AP_ObjArr, TypeSize AI_ArrSize) { - // ZEMaxUnitCnt 개 단위로 등록한다. - // CAllocWork_BASE2_T<> 를 참고하면, *this 는 '임시 작업 큐'다. + /*////////////////////////////////////////////////////////////////////// + + ■ ZEMaxUnitCnt 개 단위로 등록한다. + CAllocWork_BASE2_T<> 를 참고하면, *this 는 '임시 작업 큐'다. + + ■ AR_CAllocWork.AddList() 는 작업 AP_ObjArr 을 + + 1) '임시 작업 큐'에 등록하고, + 2) 대기 작업 쓰레드가 있으면 하나를 깨우고, + 3) 처리가 완료된 작업 공간을 '내부 삭제 리스트'를 *this 에 돌려준다. + + -- 2025-10-04 08:31 + + TAllocWork 은 일종의 thread pool 이고, + *this 는 그 pool 의 '임시 작업 큐'다. + + //////////////////////////////////////////////////////////////////////*/ if(AI_ArrSize<1) return; @@ -3700,8 +3717,6 @@ namespace ZNsMain if(--VI_MaxUnitCnt<=0) { - // CAllocWork_BASE2_T<> 를 참고하면, *this 는 '임시 작업 큐'다. - AR_CAllocWork.AddList(RR(*this)); VI_MaxUnitCnt=ZEMaxUnitCnt; }/* if(--VI_MaxUnitCnt<=0)*/ @@ -3859,6 +3874,7 @@ namespace ZNsMain }/* void DeleteAll()*/ + void DeleteHead() { if(ml_NowUnitCnt<1) return; @@ -3969,7 +3985,8 @@ namespace ZNsMain void JoinRhsTailAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize) { - // rhs 의 '내부 사용 리스트'의 마지막 AI_FetchSize 개의 링크를 자신의 '내부 사용 리스트'로 가져온다. + // rhs 의 '내부 사용 리스트'의 마지막 AI_FetchSize 개의 링크를 + // 자신의 '내부 사용 리스트'로 가져온다. if(AI_FetchSize<1) return ; @@ -4008,7 +4025,8 @@ namespace ZNsMain void JoinRhsHeadAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize) { - // rhs 의 '내부 사용 리스트'의 처음 AI_FetchSize 개의 링크를 자신의 '내부 사용 리스트'로 가져온다. + // rhs 의 '내부 사용 리스트'의 처음 AI_FetchSize 개의 링크를 + // 자신의 '내부 사용 리스트'로 가져온다. if(AI_FetchSize<1) return ; @@ -4052,7 +4070,8 @@ namespace ZNsMain void JoinRhsTailOneAtTail(ZtCObjUnitList& rhs) { - // rhs 의 '내부 사용 리스트'의 마지막 1 개의 링크를 자신의 '내부 사용 리스트'로 가져온다. + // rhs 의 '내부 사용 리스트'의 마지막 1 개의 링크를 + // 자신의 '내부 사용 리스트'로 가져온다. if(rhs.ml_NowUnitCnt<1) return; @@ -4086,7 +4105,8 @@ namespace ZNsMain void JoinRhsHeadOneAtTail(ZtCObjUnitList& rhs) { - // rhs 의 '내부 사용 리스트'의 처음 1 개의 링크를 자신의 '내부 사용 리스트'로 가져온다. + // rhs 의 '내부 사용 리스트'의 처음 1 개의 링크를 + // 자신의 '내부 사용 리스트'로 가져온다. if(rhs.ml_NowUnitCnt<1) return; @@ -4146,7 +4166,8 @@ namespace ZNsMain void JoinRhsCutListTailAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize) { - // rhs 의 '내부 삭제 리스트'의 마지막 AI_FetchSize 개의 링크를 자신의 '내부 삭제 리스트'로 가져온다. + // rhs 의 '내부 삭제 리스트'의 마지막 AI_FetchSize 개의 링크를 + // 자신의 '내부 삭제 리스트'로 가져온다. if(AI_FetchSize<1) return ; @@ -4171,7 +4192,7 @@ namespace ZNsMain { ZCLinkUnit::MakeRing(VP_RhsCutHead, VP_RhsCutTail); - mp_CutHeadUnit=VP_RhsCutHead; ///////////////////// + mp_CutHeadUnit = VP_RhsCutHead; /////////////////// } else { @@ -4184,7 +4205,8 @@ namespace ZNsMain void JoinRhsCutListHeadAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize) { - // rhs 의 '내부 삭제 리스트'의 처음 AI_FetchSize 개의 링크를 자신의 '내부 삭제 리스트'로 가져온다. + // rhs 의 '내부 삭제 리스트'의 처음 AI_FetchSize 개의 링크를 + // 자신의 '내부 삭제 리스트'로 가져온다. if(AI_FetchSize<1) return ; @@ -4224,7 +4246,8 @@ namespace ZNsMain void JoinRhsCutTailOneAtTail(ZtCObjUnitList& rhs) { - // rhs 의 '내부 삭제 리스트'의 마지막 1 개의 링크를 자신의 '내부 삭제 리스트'로 가져온다. + // rhs 의 '내부 삭제 리스트'의 마지막 1 개의 링크를 + // 자신의 '내부 삭제 리스트'로 가져온다. if(rhs.ml_CutUnitCnt<1) return;