(rontolisp) docs
← 関数

rontolisp:make-mutex

(rontolisp:make-mutex)

新しい相互排他ロックを不透明なハンドルとして返します。渡してよいのは rontolisp:with-mutex(または rontolisp:mutex-acquire / rontolisp:mutex-release)だけです。ハンドルの実体は バックエンドごとに異なるため、表示したり、2 つを < で比較したり、算術演算を行ったり することは移植可能ではありません。ハンドル自身との eq/eql 比較は機能します。

rontolisp は実際に並行実行されます — rontolisp:http-handler はインタプリタと JVM バックエンドでリクエストごとに 1 つの仮想スレッドを立て、 rontolisp:make-thread で自分のコードからも生成できます — ロックが必要なのはそのためです。両方の WASM バックエンドではスレッドは常に 1 つなので、 これらのプリミティブは no-op になります。同じソースがどこでも動きます。

ロックは再入可能です。保持しているスレッドは再度獲得でき、獲得した回数だけ解放する 必要があります。

制限

  • ハンドルは不透明でバックエンド依存です — 表示や順序付けをしないでください。
  • マクロおよびこれらのプリミティブは関数値を持ちません: #'rontolisp:make-mutex は エラーです。