# 这是一个简单的并发程序,有如下要求:
# .有两个程序a和b,希望他们能并发执行,以节约时间
# .a和b都是按照日期顺序执行,但b每日程序的前提条件是当日a的程序已经执行完毕
#解决方案:
# .创建一个文件描述符作为pipe,a程序每次执行完就把一个日期发送给pipe,然后继续执行
# .b程序每次执行时先从pipe读取a的日期,如果a的日期>=b的日期,则b继续执行,否则阻塞。 [ -e /tmp/fd5 ] || mkfifo /tmp/fd5
exec <>/tmp/fd5
rm -rf /tmp/fd5 aFun(){
for((i=;i<;i++))
do
echo 'a'$i
sleep
echo $i >&
done
} bFun(){
for((i=;i<;i++))
do
read -u5 j
if [ $i -le $j ];then
echo 'b'$i
fi
sleep
done
}
###################################################
aFun &
bFun
exec <&-
exec >&-

shell多线程之进程间通信的更多相关文章

  1. shell多线程之进程间通信(2)

    工作中往往遇到这种情况,有许多任务,依次执行比较浪费时间,由于任务之间有依赖关系,简单的并发执行又不行. 就如同下面这种情况,任务new和dvidUser是可以并发执行的,fact任务依赖于new任务 ...

  2. shell多线程之进程间通信(3)

    之前的文章依赖是1对1或1多对的,但每个任务的前置任务都只有1个. 本文的核心在于一个任务依赖于多个任务的执行完成,如上图所示,这个任务就是fact,只有new和dviduser两个任务都完成的情况下 ...

  3. [shell进阶]——shell多线程

    关于shell的多线程 1. 多线程并发执行任务,而不用一台台的串行执行,能更快更高效 2. Shell并没有多线程的概念,所以: * 一般使用wait.read等命令技巧性地模拟多线程实 * 使用命 ...

  4. shell多线程,wait

    文章来源,wait的使用效果还是不错的 最近在使用shell做一些部署工作,在使用过程中,效率一直不高.想提高效率,经过分析发现,并不是所有操作都是需要串行的,一些操作是可以进行并行操作的.经过学习, ...

  5. shell多线程(2)之基于管道实现并发

    在shell脚本里批量执行程序是比较常见的方式,如果程序很多,每个执行时间比较长,则顺序执行需要花费大量的时间. 此时并发就成为我们考虑的方向. 上篇<shell多线程>中我们已经简单实现 ...

  6. linux shell 多线程执行程序

    Shell中并没有真正意义的多线程,要实现多线程可以启动多个后端进程,最大程度利用cpu性能. 直接看代码示例吧. (1) 顺序执行的代码 #!/bin/bash date ` do { echo & ...

  7. Unix/Linux编程实践教程(二:socket、多线程、进程间通信)

    同一接口不同的数据源: 协同进程: fdopen以文件描述符为参数: fopen和popen: 为了实现popen,必须在子进程中调用sh,因为只有shell本身即/bin/sh可以运行任意shell ...

  8. [转]linux shell 多线程实现

    情景 shell脚本的执行效率虽高,但当任务量巨大时仍然需要较长的时间,尤其是需要执行一大批的命令时.因为默认情况下,shell脚本中的命令是串行执行的.如果这些命令相互之间是独立的,则可以使用“并发 ...

  9. shell 命名管道,进程间通信

    命名管道基础 命名管道也被称为FIFO文件, 在文件系统中是可见的,并且跟其它文件一样可以读写! 命名管道特点: 当写进程向管道中写数据的时候,如果没有进程读取这些数据,写进程会堵塞 当读取管道中的数 ...

随机推荐

  1. asp.net中c#求百分比

    double m= 50;double n= 100; Response.Write((m/ (m+ n)).ToString("0%"));Response.Write((m/ ...

  2. axios 提交 application/x-www-form-urlencoded

    最近工作比较忙 , 喜欢上了用有道云做笔记 , 写博客就是为了记录自己的学习的点点滴滴 , 如果能对其他人有帮助当然最好了 , 我一定要将这个习惯进行下去 .. ..... 我们以前的前后交互方式一般 ...

  3. 计算机的组成 —— 磁盘阵列(RAID)

    磁盘阵列(Redundant Arrays of Independent Disks,RAID),有"独立磁盘构成的具有冗余能力的阵列"之意.(另外一种常见阵列,FPGA:Fiel ...

  4. 3.RabbitMQ相关概念的杂谈

    1.vhost,为什么我要有这个vhost呢? 这是因为可能有很多组使用RabbitMQ,有产品组,用户组,vhost,虚拟主机的意思,可以避免命名冲突. 2.Exchange,交换机 有四种交换机 ...

  5. SWIFT学习笔记02

    1.//下面的浮点文字等于十进制12.1875: let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalD ...

  6. 【cocos2d-js官方文档】五、Cocos2d-JS v3.0的新Action API

    新增action中的方法 曾经,当我们须要反复一个action的时候,我们须要: sprite.runAction(cc.Repeat.create(action, 2)); 上面代码中创建了一个新的 ...

  7. CCNP路由实验之七 动态路由之BGP

     CCNP路由实验之七 动态路由之BGP 动态路由协议能够自己主动的发现远程网络,仅仅要网络拓扑结构发生了变化,路由器就会相互交换路由信息,不仅能够自己主动获知新添加的网络,还能够在当前网络连接失 ...

  8. Windows系统时间(FILETIME和SYSTEMTIME)

    转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8654298 欢迎关注微博:http://weibo.com/MoreWi ...

  9. Swift是一个提供RESTful HTTP接口的对象存储系统,目的是为了提供一个和AWS S3竞争的服务

    Swift是一个提供RESTful HTTP接口的对象存储系统,最初起源于Rackspace的Cloud Files,目的是为了提供一个和AWS S3竞争的服务. Swift于2010年开源,是Ope ...

  10. node.js开发笔记之EXPRESS与EJS之ejs标签v20140329

    本次记录下ejs的渲染标签 node既然是javascrip的,那么很多在前端执行代码的方式都可以放在后台从而达到无缝连接! 比如 var ygxx = function(){document.get ...