lock文

リソースへの排他的なアクセスを保証します。


taiseiue | 2025-02-13

定義

名前空間: Alice
アセンブリ: Losetta.Runtime.dll
ソースコード: Alice.Core.Flow.cs

リソースへの排他的なアクセスを保証します。

AliceScript
namespace Alice;
public void lock(variable item)
{
    //...
}
引数
item ロックする変数

対応
AliceScript RC1、RC2、GM、2.0、2.1、2.2、2.3、3.0、4
AliceSister GM、2.0、2.1、2.2、2.3、3.0、4
Losetta 0.8、0.9、0.10、0.11

説明

lock文は、指定した変数に対する相互排他ロックを取得し、本文を実行してからロックを解放します。ロックが保持されている間、他のスレッドはその変数へのアクセスをブロックされてロックを取得できず、ロックが解放されるまで待機します。lock文を使えば常に、ひとつのスレッドでのみ実行できるコードを書くことができます。

次の例では、10秒間の間、メインスレッドでitem2を代入することができません。

AliceScript
using Alice.Threading;

var item = 0;

task_run(()=>{
    item = 1;
    delay(10000);
});
item = 2;
print(item);