スレッドセーフな文字列出力

30分プログラム、その200。OCmalでスレッドセーフな文字列出力。
マルチスレッドでプログラミングしていたら出力文字列が混ざってしまったので、スレッドセーフな文字列出力を作ってみた。
Mutexを使っている。あと、デバッグ目的で使いたかったので、即座にflushするようにした。

使い方

# p "hoge";;
"hoge"

ソースコード

let mutex = Mutex.create ()
let p str = 
  try
    Mutex.lock mutex;
    Printf.printf "\"%s\"\n" str;
    flush stdout;
    Mutex.unlock mutex;
  with _ ->
    Mutex.unlock mutex