PowerShell多线程执行前后台作业的例子
程序员文章站
2022-07-04 23:37:44
下面例子使用powershell线程运行了两个后台任务和一个前台任务,创建几个运行时间长点的任务,并且每个任务命令中添加使用start-sleep。
复制代码 代码如下:...
下面例子使用powershell线程运行了两个后台任务和一个前台任务,创建几个运行时间长点的任务,并且每个任务命令中添加使用start-sleep。
复制代码 代码如下:
$start = get-date
$task1 = { start-sleep -seconds 4; get-service }
$task2 = { start-sleep -seconds 5; get-service }
$task3 = { start-sleep -seconds 3; get-service }
# run 2 in separate threads, 1 in the foreground
$thread1 = [powershell]::create()
$job1 = $thread1.addscript($task1).begininvoke()
$thread2 = [powershell]::create()
$job2 = $thread2.addscript($task2).begininvoke()
$result3 = invoke-command -scriptblock $task3
do { start-sleep -milliseconds 100 } until ($job1.iscompleted -and $job2.iscompleted)
$result1 = $thread1.endinvoke($job1)
$result2 = $thread2.endinvoke($job2)
$thread1.runspace.close()
$thread1.dispose()
$thread2.runspace.close()
$thread2.dispose()
$end = get-date
write-host -foregroundcolor red ($end - $start).totalseconds
相继执行这3个任务从start-sleep中看至少需要花费12秒。但是这个脚本仅执行了5秒多一点。其结果保存为$result1, $result2和$result3。与后台作业对比,它在返回大数据用时将差不多。
文章出处:http://www.pstips.net/
上一篇: mysql(七)
下一篇: 中高级前端面试秘籍,助你直通大厂(一)