
Сообщение от
Titus
для меня просто Си очень дружественный, а ООП - нет.
То, что повсюду называют ООП - на мой взгляд - просто вывих мозга. Как можно писать в таком стиле я представить себе не могу. Именно безумный стиль "ООП" многие (как я понимаю) путают с сутью объектного подхода.
На самом деле программа, использующая объекты - это лишь упрощённый вариант программы без объектов.
Вот пример класса LockVarType, создающего объекты быстрой межпоточной синхронизации размером в одно слово:
Код:
#define DWORD_ALIGN __declspec(align(4))
#define LOCK_VAR_TYPE DWORD_ALIGN LONG volatile
class LockVarType {
public:
LockVarType():dwLockVar(0){}
inline dword IsLocked(){ return dwLockVar; }
inline void Lock( int nSleepMS = 0 )
{
while( InterlockedCompareExchange( &dwLockVar, 1, 0 ) ) { Sleep( nSleepMS ); }
}
inline void UnLock() { dwLockVar = 0; }
inline bool TimedLock( dword uTimeOut_MS, int nSleepMS = 0 )
{
dword uTC = GetTickCount();
while( InterlockedCompareExchange( &dwLockVar, 1, 0 ) )
{
if( GetTickCount() - uTC >= uTimeOut_MS ) { return false; }
Sleep( nSleepMS );
}
return true;
}
inline bool TryLock() { return !InterlockedCompareExchange( &dwLockVar, 1, 0 ); }
protected:
LOCK_VAR_TYPE dwLockVar;
};
Этот объект имеет после компиляции размер в одно слово.
Сделать межпоточную синхронизацию легче и проще вряд ли реально.