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

@ -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<typename TAllocWork> 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;