Windows PowerShell で、スレッドセーフな処理を行う方法を説明します。
数値をインクリメントまたはデクリメント
[int]$i = 15 [System.Threading.Interlocked]::Increment([ref] $i) [System.Threading.Interlocked]::Decrement([ref] $i)■ 変数に値を設定します。 次の場合、$i に $j の値を設定します。Exchange メソッドの戻り値は、値が変更される前の $i の値です。 [int]$i = 15 [int]$j = 21 [System.Threading.Interlocked]::Exchange([ref]$i, $j) $i $j
値を比較して同じならば、変数に値を設定
次の場合、$i と $k の値を比較して同じならば、$i に $j の値を設定します。CompareExchange メソッドの戻り値は、値が変更される前の $i の値です。
[int]$i = 15 [int]$j = 21 [int]$k = 15 [System.Threading.Interlocked]::CompareExchange([ref]$i, $j, $k) $i $j $k