Linux下怎样真现shell多线程编程

相关游戏 相关文章 发表评论字体大小:【 | |

作者:佚名 2019-12-31 来源:本站整理    浏览:5     评论:0 条

  Linux外多线程编程领有进步应用步伐的相应、使多cpu体系愈加有用等长处,上面小编将经由过程Linux高shell多线程编程的例子给各人解说高多线程编程的历程,一同去理解高吧。

  #!/bin/bash

  #———————————————————————————–

  # 此例子注明了一种用wait、read号令模仿多线程的一种技巧

  # 此技巧往往用于多主机查抄,好比ssh登录、ping等等那种双入程比力急而没有消耗cpu的状况

  # 借注明了多线程的节制

  #———————————————————————————–

  function a_sub

  {

  # 此处界说一个函数,做为一个线程(子入程)

  sleep 3 # 线程的做用是sleep 3s

  }

  tmp_fifofile=“/tmp/$.fifo” mkfifo $tmp_fifofile # 新修一个fifo范例的文件

  exec 6《》$tmp_fifofile # 将fd6指背fifo范例

  rm $tmp_fifofile thread=15 # 此处界说线程数

  for

  ((i=0;i《$thread;i++));do echo

  done 》&6 # 事真上便是正在fd6外搁置了$thread个回车符

  for

  ((i=0;i《50;i++));do # 50次轮回,能够了解为50个主机,或其余

  read -u6 # 一个read -u6号令执止一次,便从fd6外减来一个回车符,而后背高执止,

  # fd6外出有回车符的时分,便停正在那了,从而真现了线程数目节制

  { # 此处子入程开端执止,被搁到后盾

  a_sub &&

  { # 此处能够用去判断子入程的逻辑

  echo “a_sub is finished”

  }

  ||

  { echo “sub error”

  }

  echo 》&6 # 当入程完毕当前,再背fd6外添上一个回车符,即剜上了read -u6减来的这个

  }

  & done wait # 期待一切的后盾子入程完毕

  exec 6》&- # 封闭df6 exit 0

  注明:

  此步伐外的号令

  mkfifo tmpfile

  战linux外的号令

  mknod tmpfile p

  效?因雷同。区分是mkfifo为POSIX规范,因而举荐运用它。该号令创立了一个先进先没的管叙文件,并为其分配文件标记符6。管叙文件是入程之间通讯的一种体式格局,留意那一句很紧张

  exec 6《》$tmp_fifofile # 将fd6指背fifo范例

  若是出有那句,正在背文件$tmp_fifofile或者&6写进数据时,步伐会被梗阻,曲到有read读没了管叙文件外的数据为行。而执止了下面那一句后便能够正在步伐运转期间一直背fifo范例的文件写进数据而没有会梗阻,而且数据会被生存高去以求read步伐读没。

  经由过程运转号令:

  time 。/multithread.sh 》/dev/null

  终极运算工夫: 50/15 = 3组(每一组15)+1组(5个《15 构成一个组)= 4组,每一组破费工夫:3秒,

  则 3 * 4 = 12 秒。

  传统非多线程的代码 运算工夫: 50 * 3 = 150 秒。

  下面便是Linux高shell多线程编程的真例引见了,运用多线程编程借可以改擅步伐构造,有趣味的伴侣没关系尝尝看吧。

这些是你想要的吗?

相关游戏

网友评论

评论需审核后才能显示