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

Linux系统运维

当前位置: 首页 > Shell >

Linux shell 实现多线程(4)

时间:2013-04-03 23:31来源:转载 作者:网络 点击:
} done wait # 等待所有的后台子进程结束 exec 6 - # 关闭df6 exit 0 sleep 3s,线程数为15,一共循环50次,所以,此脚本一共的执行时间大约为12秒 即: 153=45, 所以

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


 }  & 
linux <wbr>shell <wbr>实现多线程
linux <wbr>shell <wbr>实现多线程 done
linux <wbr>shell <wbr>实现多线程
linux <wbr>shell <wbr>实现多线程 wait   #  等待所有的后台子进程结束 
linux <wbr>shell <wbr>实现多线程 exec   6 >&-   #  关闭df6 
linux <wbr>shell <wbr>实现多线程 
linux <wbr>shell <wbr>实现多线程
linux <wbr>shell <wbr>实现多线程 exit   0 
linux <wbr>shell <wbr>实现多线程
linux <wbr>shell <wbr>实现多线程
linux <wbr>shell <wbr>实现多线程

 

sleep 3s,线程数为15,一共循环50次,所以,此脚本一共的执行时间大约为12秒

即:
15×3=45, 所以 3 x 3s = 9s
(50-45=5)<15, 所以 1 x 3s = 3s
所以 9s + 3s = 12s

$ time ./multithread.sh >/dev/null

real        0m12.025s
user        0m0.020s
sys         0m0.064s

而当不使用多线程技巧的时候,执行时间为:50 x 3s = 150s。

此程序中的命令

linux <wbr>shell <wbr>实现多线程mkfifo tmpfile

和linux中的命令

linux <wbr>shell <wbr>实现多线程mknod tmpfile p

效果相同。区别是mkfifo为POSIX标准,因此推荐使用它。该命令创建了一个先入先出的管道文件,并为其分配文件标志符6。管道文件是进程之 间通信的一种方式,注意这一句很重要

linux <wbr>shell <wbr>实现多线程exec   6 <> $tmp_fifofile        #  将fd6指向fifo类型

如果没有这句,在向文件$tmp_fifofile或者 &6写入数据时,程序会被阻塞,直到有read读出了管道文件中的数据为止。而执行了上面这一句后就可以在程序运行期间 不断向fifo类 型的文件写入数据而不会阻塞,并且数据会被保存下来以供read程序读出。

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

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