scope(exit)
MM
MM_member at pathlink.com
Fri May 12 21:24:05 PDT 2006
In article <e43ilf$141k$1 at digitaldaemon.com>, MM says...
>
>
>>Personally, I find the basic guarantee to be of very limited use. For
>>most operations, the weak guarantee seems far more appropriate, and I
>>believe it is reasonable to expect that of the lock function. In other
>>words, if the lock function fails then I would expect m to be in the
>>state it was in prior to the lock call. Further, it's possible that
>>unlock might consider being asked to unlock a mutex that the calling
>>thread doesn't own to be an error condition, which may result in an
>>exception being generated. Therefore, if lock fails and throws and
>>exception and scope(exit) unlock(m) therefore fails and throws an
>>exception as well, the application will terminate because it has two
>>exceptions in flight simultaneously. Therefore:
>>
>> lock(m);
>> scope(exit) unlock(m);
>>
>>is preferred because unlock will only be called if a lock was
>>successfully obtained, and will be called regardless of whether the
>>following code generates an error or completes successfully.
>>
>>
>>Sean
>
>Lock && unlock could ofcourse be any arbitrary function.. thus I was asking
>myself, why use the weak guarantee? When you take the change on a fault in lock
>at about the same as unlock your reasoning would be sound. But most of the
>time(in my code:) the 'unlock' function is far less complex than the 'lock'
>function.
>Is it then still better to use the weak guarantee?(not a retoric question... :)
>
>
change should be chance
More information about the Digitalmars-d
mailing list