© ウィンドウズスクリプトプログラマ - Windows Script Programmer 2019
Powershell のworflowにおける変数の排他の必要性
よろしくお願いします。
powershellのworkflowで以下のように変数を共有できると思いますが、変数は排他してから更新する必要があるのでしょうか。
-pararell により平行して実行されますが、タイミングによって同時に x を更新し不整合が発生するようはことはありますか。
以下の例で最終的に xは10になるずですが、場合によっては9になる可能性はありますか。
workflow hoge{
$x=1
for-each -paralell ($i in 1..10)
{
#処理をここに記載
$workflow:x+=1
}
家庭向け Windows | 以前の Windows バージョン | アプリ
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
-
Anonymous
2019-03-26T06:37:47+00:00 -
Anonymous
2019-03-24T05:28:27+00:00 MSDNフォーラムの方がより適切な回答が得られるでしょう。
MSDNフォーラム
https://social.msdn.microsoft.com/Forums/ja-JP/home
[ForEach -Parallel]はブロック内で定義されているアクティビティが非同期である場合 (メッセージング アクティビティ、InvokeMethod、AsyncCodeActivityから派生するアクティビティなど) に別々のスレッドで処理する処理です。逆に言うと非同期処理でなければ同期的にシリアルに実行されます。
そのため、シリアル実行されているときには、xはカウントアップされループ毎に異なる値になりますが、非同期にパラレル実行された途端に排他処理をしてカウントアップしないとループ毎に異なる値になることは保障されなくなります。