[Haskell-cafe] Re: Optimizing locking with MVars
Bulat Ziganshin
bulat.ziganshin at gmail.com
Thu May 4 00:55:29 EDT 2006
Hello John,
Thursday, May 4, 2006, 12:33:54 AM, you wrote:
>> This won't affect Handle I/O unfortunately, because we need block to
>> protect against asynchronous exceptions. I'm still not certain you
>> won't need that in the stream library, too: check any stateful code (eg.
>> buffering) and imagine what happens if an exception is raised at an
>> arbitrary point.
> Is unlocking the lock really the right thing to do on an asynchronous
> exception? A lock isn't a resource, it is a primitive needed to enforce
> correctness of your program. You use them to protect critical sections
> and chances are aborting a critical section at an arbitrary point would
> leave your program in an incorrect state, just delaying your deadlock or
> hiding the errors silently somewhere where they can bite you later.
after Simon's message i thought about this problem. i found several
situations where "restoring" of locked file will be useful:
- using stdout and other standard handles. we may need to print error
message or just continue work despite the exception abandoned our
previous writing to stdout
- access to database. despite the exception arrived during previous
operation, we need to go further and just hSeek to the position of
next I/O operation
--
Best regards,
Bulat mailto:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list