commit 2025-10-04 08:35 edit a bit ZtCObjUnitList : ZCppMain/ZtCObjList.H

This commit is contained in:
2025-10-04 08:35:16 +09:00
parent 8bf6f3447f
commit e4b9bfffee

View File

@ -3477,7 +3477,8 @@ namespace ZNsMain
ZCLinkUnit* AllocUnitAtHead() ZCLinkUnit* AllocUnitAtHead()
{ {
// AllocUnit() 을 통해 가져온 ZCLinkUnit* 을 '내부 사용 리스트'의 앞에 삽입한다. // AllocUnit() 을 통해 가져온 ZCLinkUnit* 을
// '내부 사용 리스트'의 앞에 삽입한다.
ZCLinkUnit* VP_NewLinkUnit= AllocUnit(); ZCLinkUnit* VP_NewLinkUnit= AllocUnit();
@ -3504,7 +3505,8 @@ namespace ZNsMain
ZCLinkUnit* AllocUnitAtTail() ZCLinkUnit* AllocUnitAtTail()
{ {
// AllocUnit() 을 통해 가져온 ZCLinkUnit* 을 '내부 사용 리스트'의 뒤에 삽입한다. // AllocUnit() 을 통해 가져온 ZCLinkUnit* 을
// '내부 사용 리스트'의 뒤에 삽입한다.
ZCLinkUnit* VP_NewLinkUnit= AllocUnit(); ZCLinkUnit* VP_NewLinkUnit= AllocUnit();
@ -3682,8 +3684,23 @@ namespace ZNsMain
template<typename TAllocWork> void AddTailInPool( template<typename TAllocWork> void AddTailInPool(
TAllocWork& AR_CAllocWork, TypeData* AP_ObjArr, TypeSize AI_ArrSize) 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; if(AI_ArrSize<1) return;
@ -3700,8 +3717,6 @@ namespace ZNsMain
if(--VI_MaxUnitCnt<=0) if(--VI_MaxUnitCnt<=0)
{ {
// CAllocWork_BASE2_T<> 를 참고하면, *this 는 '임시 작업 큐'다.
AR_CAllocWork.AddList(RR(*this)); VI_MaxUnitCnt=ZEMaxUnitCnt; AR_CAllocWork.AddList(RR(*this)); VI_MaxUnitCnt=ZEMaxUnitCnt;
}/* }/*
if(--VI_MaxUnitCnt<=0)*/ if(--VI_MaxUnitCnt<=0)*/
@ -3859,6 +3874,7 @@ namespace ZNsMain
}/* }/*
void DeleteAll()*/ void DeleteAll()*/
void DeleteHead() void DeleteHead()
{ {
if(ml_NowUnitCnt<1) return; if(ml_NowUnitCnt<1) return;
@ -3969,7 +3985,8 @@ namespace ZNsMain
void JoinRhsTailAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize) void JoinRhsTailAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize)
{ {
// rhs 의 '내부 사용 리스트'의 마지막 AI_FetchSize 개의 링크를 자신의 '내부 사용 리스트'로 가져온다. // rhs 의 '내부 사용 리스트'의 마지막 AI_FetchSize 개의 링크를
// 자신의 '내부 사용 리스트'로 가져온다.
if(AI_FetchSize<1) return ; if(AI_FetchSize<1) return ;
@ -4008,7 +4025,8 @@ namespace ZNsMain
void JoinRhsHeadAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize) void JoinRhsHeadAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize)
{ {
// rhs 의 '내부 사용 리스트'의 처음 AI_FetchSize 개의 링크를 자신의 '내부 사용 리스트'로 가져온다. // rhs 의 '내부 사용 리스트'의 처음 AI_FetchSize 개의 링크를
// 자신의 '내부 사용 리스트'로 가져온다.
if(AI_FetchSize<1) return ; if(AI_FetchSize<1) return ;
@ -4052,7 +4070,8 @@ namespace ZNsMain
void JoinRhsTailOneAtTail(ZtCObjUnitList& rhs) void JoinRhsTailOneAtTail(ZtCObjUnitList& rhs)
{ {
// rhs 의 '내부 사용 리스트'의 마지막 1 개의 링크를 자신의 '내부 사용 리스트'로 가져온다. // rhs 의 '내부 사용 리스트'의 마지막 1 개의 링크를
// 자신의 '내부 사용 리스트'로 가져온다.
if(rhs.ml_NowUnitCnt<1) return; if(rhs.ml_NowUnitCnt<1) return;
@ -4086,7 +4105,8 @@ namespace ZNsMain
void JoinRhsHeadOneAtTail(ZtCObjUnitList& rhs) void JoinRhsHeadOneAtTail(ZtCObjUnitList& rhs)
{ {
// rhs 의 '내부 사용 리스트'의 처음 1 개의 링크를 자신의 '내부 사용 리스트'로 가져온다. // rhs 의 '내부 사용 리스트'의 처음 1 개의 링크를
// 자신의 '내부 사용 리스트'로 가져온다.
if(rhs.ml_NowUnitCnt<1) return; if(rhs.ml_NowUnitCnt<1) return;
@ -4146,7 +4166,8 @@ namespace ZNsMain
void JoinRhsCutListTailAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize) void JoinRhsCutListTailAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize)
{ {
// rhs 의 '내부 삭제 리스트'의 마지막 AI_FetchSize 개의 링크를 자신의 '내부 삭제 리스트'로 가져온다. // rhs 의 '내부 삭제 리스트'의 마지막 AI_FetchSize 개의 링크를
// 자신의 '내부 삭제 리스트'로 가져온다.
if(AI_FetchSize<1) return ; if(AI_FetchSize<1) return ;
@ -4171,7 +4192,7 @@ namespace ZNsMain
{ {
ZCLinkUnit::MakeRing(VP_RhsCutHead, VP_RhsCutTail); ZCLinkUnit::MakeRing(VP_RhsCutHead, VP_RhsCutTail);
mp_CutHeadUnit=VP_RhsCutHead; ///////////////////// mp_CutHeadUnit = VP_RhsCutHead; ///////////////////
} }
else else
{ {
@ -4184,7 +4205,8 @@ namespace ZNsMain
void JoinRhsCutListHeadAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize) void JoinRhsCutListHeadAtTail(ZtCObjUnitList& rhs, TypeSize AI_FetchSize)
{ {
// rhs 의 '내부 삭제 리스트'의 처음 AI_FetchSize 개의 링크를 자신의 '내부 삭제 리스트'로 가져온다. // rhs 의 '내부 삭제 리스트'의 처음 AI_FetchSize 개의 링크를
// 자신의 '내부 삭제 리스트'로 가져온다.
if(AI_FetchSize<1) return ; if(AI_FetchSize<1) return ;
@ -4224,7 +4246,8 @@ namespace ZNsMain
void JoinRhsCutTailOneAtTail(ZtCObjUnitList& rhs) void JoinRhsCutTailOneAtTail(ZtCObjUnitList& rhs)
{ {
// rhs 의 '내부 삭제 리스트'의 마지막 1 개의 링크를 자신의 '내부 삭제 리스트'로 가져온다. // rhs 의 '내부 삭제 리스트'의 마지막 1 개의 링크를
// 자신의 '내부 삭제 리스트'로 가져온다.
if(rhs.ml_CutUnitCnt<1) return; if(rhs.ml_CutUnitCnt<1) return;