日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

让powershell同时只能运行一个脚本(进程互斥例子)

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 让powershell同时只能运行一个脚本(进程互斥例子) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

powershell,mutex,互斥,進程互斥,腳本互斥

powershell腳本互斥例子,在powershell類別文章中,聲明原創唯一。

powershell 傳教士 原創文章 2016-07-02 ,2017-10-10?更新。允許轉載,但必須保留名字和出處,否則追究法律責任

---【前言】---

??????? 有時候我們希望腳本并發,用多進程、多線程盡快地跑。也有時我們希望同時只能運行一個腳本。

linux中bash的做法是,腳本先檢測特定文件,沒有就建立這個文件,并運行。運行完后就刪除。 這種方法對于powershell來說已經out了,老奶奶了。這個方法有兩個弊端:

1 是慢,內存速度是磁盤文件的1000左右倍。

2 如果腳本非正常終止,沒有刪除特定文件,那么下一次腳本將無法運行。

而。net(powershell)給我們提供了【內存中的】特定值,就是用System.Threading.Mutex類,來讓powershell腳本享受二進制程序相同的待遇。

當然,我感覺還是有點不完美,即這個值是基于進程,而不是基于腳本。

?

---【腳本調用時的注意事項】---

??????? 正由于這個弊端,所以我們要在cmd中,這樣調用腳本:

powershell -file mutex_powershell進程互斥例子.ps1

單開一個進程然后再調用,在powershell中調用腳本也是這樣。 當然也可以用start-process調用。就是不能直接調用。

假設你直接調用:

開兩個powershell進程。在powershell_a中運行這個腳本,把powershell_a進程注冊成了唯一。 再在powershell_b中再運行這個腳本,將永遠顯示“互斥失敗”。那是因為,即使powershell_a中的腳本運行結束了,但powershell_a這個進程還沒結束。

?

---【豬懂傻改 腳本例子】---

# PowerShell 進程(腳本)互斥的例子 $互斥名字 = 'Global\我代號為天王蓋地虎' $建立互斥成功否 = $flase $互斥對象 = New-Object System.Threading.Mutex ($true,$互斥名字,[ref]$建立互斥成功否) if ($建立互斥成功否) {write-host '互斥成功,開始干活!'start-sleep -Seconds 60 #你的任務$互斥對象.ReleaseMutex() | Out-Null$互斥對象.Dispose() | Out-Nullwrite-host '活干完了,釋放' } else { #?每個互斥腳本必須單獨占用一個進程!powershell傳教士 win7 ,win10,?powershell core v6.0 beta8 on linux測試通過write-host '互斥失敗 !' }

?

謝謝看帖,完。

?

轉載于:https://www.cnblogs.com/piapia/p/5647205.html

總結

以上是生活随笔為你收集整理的让powershell同时只能运行一个脚本(进程互斥例子)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。