我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux系统下Shell多线程编程的实例用法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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多线程编程的实例用法”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux系统下Shell多线程编程的实例用法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux系统下Shell多线程编程的实例用法

本篇内容主要讲解“Linux系统下Shell多线程编程的实例用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统下Shell多线程编程的实例用法”吧!#!/bin/bash#&mda
2023-06-13

Linux下怎么实现shell多线程编程

本篇内容介绍了“Linux下怎么实现shell多线程编程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  Linux中多线程编程拥有提高应用
2023-06-13

Linux下的多线程编程实例解析

1 引言线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多
2022-06-03

linux系统下udp编程实例

以下是一个简单的UDP编程实例,用于在Linux系统上发送和接收UDP数据包。```c#include #include #include #include #include #define BUF_SIZE 1024void error_
2023-09-20

Linux系统中Shell编程的示例分析

这篇文章主要介绍Linux系统中Shell编程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一. 什么是Shell 1. 在学习Shell编程之前,我们应该要先知道什么是Shell用户、She
2023-06-26

怎么在linux系统中实现openmp多线程编程

本篇文章给大家分享的是有关怎么在linux系统中实现openmp多线程编程,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。关键语法:代码如下:#inlcude #p
2023-06-13

nodejs中使用多线程编程的方法实例

在以前的博文别说不可能,nodejs中实现sleep中,我向大家介绍了nodejs addon的用法。今天的主题还是addon,继续挖掘c/c++的能力,弥补nodejs的弱点。 我曾多次提到过nodejs的性能问题。其实就语言本身而言,n
2022-06-04

Java多线程编程小实例模拟停车场系统

下面分享的是一个Java多线程模拟停车场系统的小实例(Java的应用还是很广泛的,哈哈),具体代码如下:Park类public class Park {boolean []park=new boolean[3]; public bool
2023-05-30

举例讲解Linux系统下Python调用系统Shell的方法

时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的。那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 1.1. os模块的exec方法族 Py
2022-06-04

对Linux下shell编程之for循环的实例讲解

linux 下 for 循环中可以使用 break 和 continue 关键字来跳出循环, 和java 用法一致 一、常用for循环结构#语法一 for 变量 in 值1 值2 值3..do程序块儿done # #语法二 for
2022-06-04

shell脚本编程中case语句的实例用法

本篇内容介绍了“shell脚本编程中case语句的实例用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!case语句是用来实现多个if..e
2023-06-09

关于JAVA中多线程编程方法的详细解析(附实例)

一、程序、进程、线程程序是一组指令的有序集合,也可以将其通俗地理解为若干行代码。它本身没有任何运行的含义,它只是一个静态的实体,它可能只是一个单纯的文本文件,也有可能是经过编译之后生成的可执行文件。  从狭义来说,进程是正在运行的程序的实例;从广义上来说,进程
关于JAVA中多线程编程方法的详细解析(附实例)
2019-09-06

Android使用AsyncTask实现多线程下载的方法

本文实例讲述了Android使用AsyncTask实现多线程下载的方法。分享给大家供大家参考,具体如下:public class MainActivity extends Activity implements OnClickListene
2022-06-06

WinXP系统里让IE支持多线程下载的设置方法

随着电脑的普及化和网络速php度的提高很多人会进行网上冲浪在网上下载电影来观看,有时我们会同时下载多个文件,为了支持多线程下载通常都会选择专业软件进行下载,因为不少人认为ie浏览器是不支持多线程下载只支持单线程下载,其实不是的ie浏览器其实
2023-06-07

Python 多线程与多进程:实战案例剖析,掌握并发编程的应用技巧

Python 多线程、多进程是实现并发编程的两种主要方式,在实践中各有所长。本文将通过两个实战案例,深入剖析多线程、多进程的应用技巧,帮助开发者更好地掌握并发编程。
Python 多线程与多进程:实战案例剖析,掌握并发编程的应用技巧
2024-02-24

Python 多线程与多进程:行业应用实例,探索并发编程的无限潜力

Python多线程和多进程是两种强大的并发编程模式,它们可以帮助我们充分利用多核CPU的计算能力,大幅提升程序性能。多线程和多进程在行业中有着广泛的应用,本文将通过几个实例来展示它们在实际场景中的应用,帮助读者深入理解和掌握这些并发编程技术。
Python 多线程与多进程:行业应用实例,探索并发编程的无限潜力
2024-02-24

编程热搜

目录