- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
TMutex CriticalGlobalRTOSMutex;
...
void CriticalDoing()
{
CriticalGlobalRTOSMutex.Lock();
...
if( !HorriblyDoing(...) )
{
throw FatalException;
};
...
CriticalGlobalRTOSMutex.UnLock();
};
...
guest 19.08.2009 09:17 # 0
Говногость 19.08.2009 10:10 # 0
gpr 06.06.2010 15:31 # 0
absolut 06.06.2010 21:18 # 0
guest 06.06.2010 23:27 # 0
gpr 07.06.2010 10:06 # 0
Например, FatalException означает что все горит, и надо срочно включать систему пожаротушения. А мутекс разлочивать нельзя, потому как устройство, соответствующее ему, уже сгорело.
guest 06.06.2010 23:28 # 0
Это как бе намекает нам, что если выйти из программы, то страшный мьютекс никогда не освободится. Чем не контекст?
gpr 07.06.2010 09:32 # 0
Или как вариант - в случае exception мутекс разлочивать ни в коем случае нельзя, его будет разлочивать обработчик исключений.
Говногость 19.08.2009 10:11 # 0
CriticalGlobalRTOSMutex.Lock();
return;
CriticalGlobalRTOSMutex.UnLock();
guest 19.08.2009 23:18 # 0