Здравствуйте, iix, Вы писали:
iix>Здравствуйте, GlebZ, Вы писали:
GZ>>Неизвестно что имелось ввиду. Mutex если уже был создан, должен давать ошибку, и это есть нормальная ситуация. Он для этого и создается. А может это и исключительный случай. Без знания того что здесь автор хотел, не скажешь.
GZ>>Поэтому лучше RAII.
iix>Просто хотел спросить как иначе но красивше без этих if внутри if написать данную функцию. И как боротся с таким количеством проверок. Чтоли принимать таблетки против паранойй
class CMutex
{
HANDLE m_handle;
public:
CMutex()
{
m_handle=0;
m_handle==CreateMutex(NULL,false,NULL);
if (!m_handle)
throw Exception("Error");
}
~CMutex(){if (m_handle)CloseHandle(m_handle);};
}
class CThread
{
HANDLE handle;
public:
CMutex()
{
m_handle=0;
m_handle=(HANDLE)_beginthreadex(NULL,0,(PTHREAD)PingThread,this,0,&thrdaddr)
if (!m_handle)
throw Exception("Error");
}
~CThread(){}
}
void Logging()
{
if (!Logged())
{
CMutex sendmtx;
CMutex recvmtx;
CThread pingthrd;
CThread recvthrd;
pingthrd.TerminateThread(0);
recvthrd.TerminateThread(0);
mthrd[0]=pingthrd;
mthrd[1]=recvthrd;
WaitForMultipleObjects(2,mthrd,true,INFINITE);
}
}
По моему, вполне читабельно.