Linux系统下Shell多线程编程的实例用法
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容主要讲解"Linux系统下Shell多线程编程的实例用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Linux系统下Shell多线程编程的实例用
千家信息网最后更新 2025年12月02日Linux系统下Shell多线程编程的实例用法
本篇内容主要讲解"Linux系统下Shell多线程编程的实例用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"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多线程编程的实例用法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
线程
文件
进程
命令
数据
程序
类型
实例
系统
编程
时间
管道
主机
内容
后台
技巧
指向
明了
学习
控制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
二手服务器主机与台式机买哪个好
我们用的电信服务器是本市的吗
外卖侠服务器配置
百橙网络技术有限公司怎么样
第一支正式网络安全攻防战队
读取数据库的方法
天津到山西有哪几个服务器
阿里云服务器安全设施描述
戴尔740服务器序列号怎么看
与网络技术有关的职位
一台服务器能开多少进程
洛阳做直销网络技术公司
河南零利优家网络技术有限公司
银行储蓄系统数据库
企业服务器做raid几
食堂信息管理数据库系统
怎么写软件开发中期目标
杭州有网络安全专业吗
web服务器被攻击
多线程更新数据库报错
湖南数据库日志审计代理商
诛仙3服务器提示网络错误
网络安全考研400分各科成绩
黑龙江省网络安全知识答题
阿里云服务器安全设施描述
plsql动态语句插入数据库
数据是直接放在数据库中吗
曙光英雄怎么连接服务器
郑州系统软件开发费用是多少
衣恋服务器