zoukankan      html  css  js  c++  java
  • [linux] 线程和wait命令,sleep命令

    在linux脚本编程中使用多线程编程,其中wait命令可以实现shell的多线程同步控制。

    1. 启动后台子任务

      在执行命令后加&操作符,表示将命令放在子shell中异步执行。可以达到多线程效果。如下,

    sleep 10 #等待10秒,再继续下一操作  
    sleep 10 & #当前shell不等待,后台子shell等待  

    2. wait命令

      wait是用来阻塞当前进程的执行,直至指定的子进程执行结束后,才继续执行。使用wait可以在bash脚本“多进程”执行模式下,起到一些特殊控制的作用。

      wait  [作业指示或进程号]

      eg:wait 23   or  wait %1

            1.等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出状态状态。如果没有制定参数,则等待所有子进程的退出,其退出状态为0.

            2.如果是shell中等待使用wait,则不会等待调用函数中子任务。在函数中使用wait,则只等待函数中启动的后台子任务。

            3.在shell中使用wait命令,相当于高级语言里的多线程同步。

     example:

    1.使用wait等待所有子任务结束。

    #!/bin/sh  
    echo “1”  
    sleep 5&  
    echo “3”  
    echo “4”  
    wait  #会等待wait所在bash上的所有子进程的执行结束,本例中就是sleep 5这句  
    输出:echo”5

    2.在函数中使用wait

    #!/bin/bash  
    source ~/.bashrc  
      
    fun(){  
        echo "fun is begin.timeNum:$timeNum"  
        local timeNum=$1  
        sleep $timeNum &  
        wait #这个只等待wait前面sleep  
          
        echo "fun is end.timeNum:$timeNum"  
    }  
      
    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  
  • 相关阅读:
    Nim or not Nim? hdu3032 SG值打表找规律
    Maximum 贪心
    The Super Powers
    LCM Cardinality 暴力
    Longge's problem poj2480 欧拉函数,gcd
    GCD hdu2588
    Perfect Pth Powers poj1730
    6656 Watching the Kangaroo
    yield 小用
    wpf DropDownButton 源码
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/6170199.html
Copyright © 2011-2022 走看看