未分類

PowerShell - スレッドセーフな処理を行う

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

-未分類