Linux系统运维:http://www.linuxyw.com,QQ交流群:244914685

Linux系统运维

当前位置: 首页 > Shell >

Shell多线程脚本的详细注解

时间:2013-04-03 23:26来源:转载 作者:小编1000 点击:
其实这个脚本并没有实现多线程,shell也根本不可能实现多线程。 此脚本的作用无非是限制几乎同时放入后台执行的进程数量而已,从而达到在提高脚本执行效率的同时又不明显增加负

转载请注明出处: Linux系统运维 http://www.linuxyw.com/linux/Shell/20130403/15.html


在网上看到shell模拟多线程的脚本,看了一下,估计对于新手还是很难理解,本文将进行更加详细的注解。

其实这个脚本并没有实现多线程,shell也根本不可能实现多线程。
此脚本的作用无非是限制几乎同时放入后台执行的进程数量而已,从而达到在提高脚本执行效率的同时又不明显增加负载的作用。

原始脚本如下:

#!/bin/bash

SEND_THREAD_NUM=13
tmp_fifofile="/tmp/$$.fifo"
mkfifo "$tmp_fifofile"
exec 6<>"$tmp_fifofile"

for ((i=0;i<$SEND_THREAD_NUM;i++));do
                 echo                                                                                    
done >&6

for i in `seq 1 100`;do                                                        
                 read -u6                                                                        

                 {
                                 echo $i                                                 
                                 sleep 3                                                 
                                 echo >&6                                        
                 } &

                pid=$!
                echo $pid
done

wait

exec 6>&-

exit 0

以下为详细注解。

#设置线程数,在这里所谓的线程,其实就是几乎同时放入后台(使用&)执行的进程。
SEND_THREAD_NUM=13
# 脚本运行的当前进程ID号作为文件名,其实这样命名只是为了防止创建管道文件时与现有文件名重复,从而引起创建失败,别无他用。
tmp_fifofile="/tmp/$$.fifo"                  

本文来自linux系统运维http://www.linuxyw.com/linux/Shell/20130403/15.html

顶一下
(0)
0%
踩一下
(0)
0%
分享按钮
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片