linux下实现并发逻辑
################shell 模拟实现并发跑数#################
有时候我们知道一些程序是可以同时跑的,互不影响,为了提高效率不得不使用并发跑脚本
#1、思路一
我们都知道在linux中把程序丢后台跑脚本,我们可以同时跑很多个,这就是实现并发的思路,但是呢?
如果我们一次性跑很多的后台程序,如果服务器没能扛住。。。。这就尴尬了,如果手工控制。。这就有点low了
#2、思路二
基于上面我们弄个改进版,我们写个循环,分批跑,每批保证每次只能跑10个,这样就解决上面的问题啦
但是,分批跑,每一批都要等上一批跑完了,下一批才能继续,如果每个批次中都有那么一个跑的很慢,这样就效率低啦
#3、思路三
就像现在的服务一样,比如银行,我们都知道去银行办理手续都是先那个号,假设银行有10个窗口,我们都知道有些人办理的
业务很简单,分分钟就完事了,但是有些人就很慢了,所以每个人手上都要有个编号,按照编号进行处理,这样就可以保证每个
窗口都一值保持给客户办理业务啦。这就是处理linux并发的逻辑了
实现:
就是采用有名管道mkfifo命令和exec命令实现,管道有阻塞的特点,要等待传送值才继续运行,如有不懂的小伙伴,可以去度娘
#!/bin/bash
############################################
## Author:lugh1
## Blog:
## Time:-- ::
## Version:V 1.0
## Description:并发跑数到gp对应的exp表
############################################ #检查参数。。。。 PWD=`cd $(dirname "$0");pwd` #获取脚本的目录 #创建临时管道文件
mkfifo $PWD/fifo_file #以读写方式打开fifo_file管道文件,文件描述符为4(赋予其有管道的特性),也可以取3-9任意描述符
exec <>$PWD/fifo_file #删除临时管道文件,也可不删除
rm -f $PWD/fifo_file #设置并发数,也就是举例中银行的窗口数
for ((i=;i<;i++))
do
echo "" > &
done #循环所有要执行任务,这里根据自己的业务需求修改循环
while true
do
read -u3 #从管道中读取行,每次一行,所有行读取完毕后执行挂起,直到管道有空闲的行,
#也就是有一个人去一个窗口办理业务了,所以就少了一个可用的窗口 {
sh shell.sh #这里放置自己要跑的逻辑
echo "" >&
}& #放入后台执行,这里表示一个人在一个窗口开始办理业务,占据了一个位置,所以这个人占据位置和办理业务是
#绑定在一起的,所以需要{}&,表示当这个人办理完了,就离开了,然后就释放了那个座位,下一个持有编号对的人
#又可以在该窗口办理业务了
done
wait #等待所有后台进程执行完成
exec >&- #删除文件描述符
exec <&- #删除文件描述符
linux下实现并发逻辑的更多相关文章
- Linux下高并发socket最大连接数所受的各种限制(详解)
1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每 ...
- Linux下高并发socket链接数测试
一.如何增大service进程的max open files ulimit -n 只能改小max open files,不能改大.需要按照以下步骤: 修改/etc/security/limits.co ...
- Linux下高并发网络编程
Linux下高并发网络编程 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时, 最高的并发数量都要受到系统对用户单一进程同时可打 ...
- linux下高并发网络应用注意事项
本文转自:http://www.blogjava.net/bacoo/archive/2012/06/11/380500.html linux下高并发网络应用注意事项 vi /etc/sysctl.c ...
- [转载] Linux下高并发socket最大连接数所受的各种限制
原文: http://mp.weixin.qq.com/s?__biz=MzAwNjMxNjQzNA==&mid=207772333&idx=1&sn=cfc8aadb422f ...
- Linux下高并发socket最大连接数所受的各种限制
http://blog.csdn.net/guowake/article/details/6615728 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行 ...
- Linux下高并发socket最大连接数
http://soft.chinabyte.com/os/285/12349285.shtml (转载时原文内容做个修改) 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是 ...
- Linux下高并发socket最大连接数各种限制的调优
1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每 ...
- Linux下高并发socket最大连接数所受的各种限制(转)
1.修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个 ...
随机推荐
- Bzoj 2733: [HNOI2012]永无乡 数组Splay+启发式合并
2733: [HNOI2012]永无乡 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3955 Solved: 2112[Submit][Statu ...
- binlog_format日志错误
客户磁盘空间不够用,发现mysql的err日志文件已每天大概600M-800M的速度增长,开头考虑作日志切割,打开发现,整个7.8G的文件里面百分之99的文件全部是如下所示的warning警告信息 1 ...
- c# Inner Join sql 和 Enumerable.Join
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp1 { class Pro ...
- 使用GDAL实现DEM的地貌晕渲图(二)
1. 问题 之前我在<使用GDAL实现DEM的地貌晕渲图(一)>这篇文章里面讲述了DEM晕渲图的生成原理与实现,大体上来讲是通过计算DEM格网点的法向量与日照方向的的夹角,来确定该格网点的 ...
- backbone之路由锚点的替换
1.需求 由于项目一开始做的时候不甚完善,所有的网页没有路由功能,导致一些搜索结果在页面跳转之后,没有被记录下来,在页面跳转之后回退,得到的是页面最原始的结果,没有指定的搜索条件.最近项目的在完善这些 ...
- 蓝牙Beacon广播数据包格式以及解析
目录 1. 获取原始蓝牙广播包 2. 安装WireShark软件 3. 分析Beacon广播包数据 3.1 第一个数据包格式 3.2 第二个数据包格式 3.3 Android程序开发中的蓝牙广播包 4 ...
- Java EE.JSP.动作组件
常见的JSP动作组件有以下几种: 1)<jsp:include>:在页面被请求的时候引入一个文件 2)<jsp:param>:在动作组件中引入参数信息 3)<jsp:fo ...
- Python秒算24点,行还是不行?
周末闲来无事,看到隔壁家的老王在和隔壁家的媳妇玩24点,就进屋看了看.发现老王是真不行啊,那不行,这也不行. 就连个24点都玩不过他媳妇,给他媳妇气的,啥都不能满足,这不能,那也不能. 我坐下来和他媳 ...
- set和map结构,class类
1.set数据结构和map数据结构: (1)set: 数据结构set(集合,无序且值不能重复的数据集合,特点是key值和value值相同,没有重复的value //1 创建set ,,]) conso ...
- TCP queue 的一些问题
转自Jasey Wang的blog,原文地址 首先回顾下三次握手里面涉及到的问题: 当 client 通过 connect 向 server 发出 SYN 包时,client 会维护一个 socket ...