[Haskell-cafe] Are libraries expected to enforce safe usage of thread-unsafe functions?

Thomas Koster tkoster at gmail.com
Tue Apr 12 07:57:38 UTC 2016

Hi friends,

I am writing a library that has Handle-like values for resources that are
not thread-safe (foreign state from a non-thread-safe C library). In other
words, a resource can only be "used" by one Haskell thread at a time.
Unless I take steps, if one shares the resource between concurrent Haskell
threads, bad things will happen at runtime (even with a single-threaded

Naturally, I want consumers to use my library safely, so I am considering
making it safe for all by pessimistically enforcing safe usage with MVars.

Is it common/expected that Haskell libraries enforce safe access like this?

MVars are not free from cost, but are they cheap (i.e. almost as fast as no
forced synchronization) as long as no blocking/rescheduling occurs?

Thomas Koster
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160412/cc7048bc/attachment.html>

More information about the Haskell-Cafe mailing list