shell 多執行緒程式設計和wait命令

2021-09-24 03:49:24 字數 1056 閱讀 2404

shell裡面也是可以進行多執行緒程式設計的,而且十分方便,同時,wait命令可以進行shell的多執行緒同步控制。

1、啟動後台子任務:

在執行命令後加&操作符,表示將命令放在子shell中非同步執行。可以達到多執行緒效果。如下:

sleep 10 #等待10秒,再繼續下一操作

sleep 10 & #當前shell不等待,後台子shell等待

2、wait命令介紹

wait  [作業指示或程序號]

1.等待作業號或者程序號制定的程序退出,返回最後乙個作業或程序的退出狀態狀態。如果沒有制定引數,則等待所有子程序的退出,其退出狀態為0.

2.如果是shell中等待使用wait,則不會等待呼叫函式中子任務。在函式中使用wait,則只等待函式中啟動的後台子任務。

3.在shell中使用wait命令,相當於高階語言裡的多執行緒同步。

示例1:使用wait等待所有子任務結束

#!/bin/bash

sleep 10 &

sleep 5&

wait #等待10秒後,退出

#!/bin/bash

sleep 10 &

sleep 5&

wait $! #$!表示上個子程序的程序號,wait等待乙個子程序,等待5秒後,退出

示例2:在函式中使用wait

#!/bin/bash

source ~/.bashrc

fun()

fun 10 &

fun 20 &

wait #如果fun裡面沒有wait,則整個指令碼立刻退出,不會等待fun裡面的sleep

echo "all is ending"

輸出:fun is begin.timenum:10

fun is begin.timenum:20

fun is end.timenum:10

fun is end.timenum:20

all is ending

從輸出結果,可以看到,整個指令碼,等待了所有子任務的退出

linux shell程式設計多執行緒和wait命令學習

最近在使用shell做一些部署工作,在使用過程中,效率一直不高。想提高效率,經過分析發現,並不是所有操作都是需要序列的,一些操作是可以進行並行操作的。經過學習,shell裡面也是可以進行多執行緒程式設計的,而且十分方便,同時,wait命令可以進行shell的多執行緒同步控制。下面是shell多執行緒...

linux shell程式設計多執行緒和wait命令學習

最近在使用shell做一些部署工作,在使用過程中,效率一直不高。想提高效率,經過分析發現,並不是所有操作都是需要序列的,一些操作是可以進行並行操作的。經過學習,shell裡面也是可以進行多執行緒程式設計的,而且十分方便,同時,wait命令可以進行shell的多執行緒同步控制。下面是shell多執行緒...

linux shell程式設計多執行緒和wait命令學習

最近在使用shell做一些部署工作,在使用過程中,效率一直不高。想提高效率,經過分析發現,並不是所有操作都是需要序列的,一些操作是可以進行並行操作的。經過學習,shell裡面也是可以進行多執行緒程式設計的,而且十分方便,同時,wait命令可以進行shell的多執行緒同步控制。下面是shell多執行緒...