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  
  • 相关阅读:
    重写分词器
    twitterfeed
    What is WSGI?
    lucene 3.3一元切分查询例子
    How to Import Your Blog to Facebook Automaticly Using Notes
    协同过滤 学习笔记
    Python入门练习(一):基于全切分,一元语法模型的汉语分词
    test blog sync to qq microblogging
    solr的用分布式搜索(转)
    盘古分词功能简介
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/6170199.html
Copyright © 2011-2022 走看看