commit 2025-09-10 15:27 edit a bit ZCppMain/ZCProcess_Linux.H

This commit is contained in:
2025-09-10 15:27:19 +09:00
parent b2956aad58
commit e54bc15c4a

View File

@ -1059,7 +1059,8 @@ namespace ZNsMain
bool Close() bool Close()
{ {
bool VB_IsOK=(::shmctl(mh_FileMap, IPC_RMID, 0)!=-1) ; bool VB_IsOK =
( ::shmctl(mh_FileMap, IPC_RMID, 0) != -1 ) ;
mh_FileMap=EInvalidID; return VB_IsOK; mh_FileMap=EInvalidID; return VB_IsOK;
@ -1171,7 +1172,7 @@ namespace ZNsMain
if((mh_Mutex=::semget((key_t)AL_KeyID, 1, AI_Flag))==-1)*/ if((mh_Mutex=::semget((key_t)AL_KeyID, 1, AI_Flag))==-1)*/
this->Init(); return true; this->Init(); return true;
}/* s }/*
bool Make(long AL_KeyID, int AI_Flag=IPC_CREAT | IPC_EXCL | 0664)*/ bool Make(long AL_KeyID, int AI_Flag=IPC_CREAT | IPC_EXCL | 0664)*/
bool Lock() bool Lock()
@ -1246,13 +1247,13 @@ namespace ZNsMain
class ZCMutexData*/ class ZCMutexData*/
private: private:
ZCMutexData* mp_MutexData ; ZCMutexData* mp_CMutexData ;
ZCShareMemory mo_CShareMemory; ZCShareMemory mo_CShareMemory;
public : public :
ZCProcessMutexPosix() ZCProcessMutexPosix()
{ {
mp_MutexData=0; mp_CMutexData=0;
}/* }/*
ZCProcessMutexPosix()*/ ZCProcessMutexPosix()*/
@ -1276,7 +1277,7 @@ namespace ZNsMain
}/* }/*
if(mo_CShareMemory.LinkMap()==false)*/ if(mo_CShareMemory.LinkMap()==false)*/
mp_MutexData=(ZCMutexData*)mo_CShareMemory.GetStartAddress(); mp_CMutexData=(ZCMutexData*)mo_CShareMemory.GetStartAddress();
} }
else // mo_CShareMemory.ShmGet(AL_MapKey,sizeof(ZCMutexData))==true else // mo_CShareMemory.ShmGet(AL_MapKey,sizeof(ZCMutexData))==true
{ {
@ -1286,14 +1287,14 @@ namespace ZNsMain
}/* }/*
if(mo_CShareMemory.LinkMap()==false)*/ if(mo_CShareMemory.LinkMap()==false)*/
mp_MutexData=(ZCMutexData*)mo_CShareMemory.GetStartAddress(); mp_CMutexData = (ZCMutexData*)mo_CShareMemory.GetStartAddress();
::memset(mp_MutexData, 0x00, sizeof(ZCMutexData)); ::memset(mp_CMutexData, 0x00, sizeof(ZCMutexData));
::pthread_mutexattr_init (&mp_MutexData->mo_PThreadMutexAttr); ::pthread_mutexattr_init (&mp_CMutexData->mo_PThreadMutexAttr);
::pthread_mutexattr_settype (&mp_MutexData->mo_PThreadMutexAttr, PTHREAD_MUTEX_RECURSIVE); // 이전에는 PTHREAD_MUTEX_ERRORCHECK 로 설정했었다. 2007-05-24 20:04:00 ::pthread_mutexattr_settype (&mp_CMutexData->mo_PThreadMutexAttr, PTHREAD_MUTEX_RECURSIVE); // 이전에는 PTHREAD_MUTEX_ERRORCHECK 로 설정했었다. 2007-05-24 20:04:00
::pthread_mutexattr_setpshared(&mp_MutexData->mo_PThreadMutexAttr, PTHREAD_PROCESS_SHARED); ::pthread_mutexattr_setpshared(&mp_CMutexData->mo_PThreadMutexAttr, PTHREAD_PROCESS_SHARED );
::pthread_mutex_init (&mp_MutexData->mo_PThreadMutex, (const pthread_mutexattr_t*)&mp_MutexData->mo_PThreadMutexAttr); ::pthread_mutex_init (&mp_CMutexData->mo_PThreadMutex, (const pthread_mutexattr_t*)&mp_CMutexData->mo_PThreadMutexAttr);
}/* }/*
else // mo_CShareMemory.ShmGet(AL_MapKey,sizeof(ZCMutexData))==true*/ else // mo_CShareMemory.ShmGet(AL_MapKey,sizeof(ZCMutexData))==true*/
@ -1310,7 +1311,7 @@ namespace ZNsMain
int LockRaw() int LockRaw()
{ {
return ::pthread_mutex_lock(&mp_MutexData->mo_PThreadMutex); return ::pthread_mutex_lock(&mp_CMutexData->mo_PThreadMutex);
// EDEADLK 를 반환하는 경우를 체크할 것. // EDEADLK 를 반환하는 경우를 체크할 것.
}/* }/*
@ -1332,7 +1333,7 @@ namespace ZNsMain
int LockRaw(const struct timespec& AR_TimeSpec) int LockRaw(const struct timespec& AR_TimeSpec)
{ {
return ::pthread_mutex_timedlock(&mp_MutexData->mo_PThreadMutex, &AR_TimeSpec); return ::pthread_mutex_timedlock(&mp_CMutexData->mo_PThreadMutex, &AR_TimeSpec);
// 성공이면 ZNsEnum::ZEThread_OK 를 // 성공이면 ZNsEnum::ZEThread_OK 를
// 시간초과이면 ZNsEnum::ZEThread_TimeOut 를 리턴 // 시간초과이면 ZNsEnum::ZEThread_TimeOut 를 리턴
@ -1348,7 +1349,8 @@ namespace ZNsMain
VO_TimeSpec.tv_sec = time(NULL) + AL_MiliSec/1000 ; VO_TimeSpec.tv_sec = time(NULL) + AL_MiliSec/1000 ;
VO_TimeSpec.tv_nsec = (AL_MiliSec%1000)* 1000*1000 ; VO_TimeSpec.tv_nsec = (AL_MiliSec%1000)* 1000*1000 ;
return ::pthread_mutex_timedlock(&mp_MutexData->mo_PThreadMutex, &VO_TimeSpec); return ::pthread_mutex_timedlock
(&mp_CMutexData->mo_PThreadMutex, &VO_TimeSpec);
}/* }/*
int Lock(long AL_MiliSec)*/ int Lock(long AL_MiliSec)*/
@ -1362,13 +1364,13 @@ namespace ZNsMain
bool UnLock() bool UnLock()
{ {
return ::pthread_mutex_unlock(&mp_MutexData->mo_PThreadMutex)==0; return ::pthread_mutex_unlock(&mp_CMutexData->mo_PThreadMutex)==0;
}/* }/*
bool UnLock()*/ bool UnLock()*/
void Close() void Close()
{ {
::pthread_mutex_destroy(&mp_MutexData->mo_PThreadMutex); ::pthread_mutex_destroy(&mp_CMutexData->mo_PThreadMutex);
mo_CShareMemory.UnMap(); mo_CShareMemory.UnMap();
mo_CShareMemory.Close(); mo_CShareMemory.Close();