commit 2025-10-04 08:35 edit a bit ZtCObjUnitList : ZCppMain/ZtCObjList.H
This commit is contained in:
@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user