关于使用shell开辟几个并发线程同时执行互不相关的应用
2016-11-23 15:24
453 查看
在bash中,我们通过后台运行(&)实现多线程。
#!/bin/bash
tmpt="/tmp/$$.fifo"
mkfifo $tmpt #新建一个fifo类型的文件
exec 6<>$tmpt#将fd6指向fifo类型
rm $tmpt
t_sum=0;
function fun3()#创建函数
{
t_sum=$(($t_sum+1))
}
for ((i=0;i<5;i++));do#指定开辟的线程数
echo
done >& 6 #事实上就是在fd6中放置了5个回车符
for ((i=0;i<5;i++));do#放入后台并发循环5次
read -u 6
{
for((j=0;j<7;j++));do#fun3执行的次数
{
fun3
echo "lllllllllllll"
}
done
echo $t_sum;
t_sum=0;
echo >& 6 #当进程结束以后,再向fd6中加上一个回车符,即补上了read -u6减去的那个
}&
done
wait
exec 6>-#关闭fd6
#!/bin/bash
tmpt="/tmp/$$.fifo"
mkfifo $tmpt #新建一个fifo类型的文件
exec 6<>$tmpt#将fd6指向fifo类型
rm $tmpt
t_sum=0;
function fun3()#创建函数
{
t_sum=$(($t_sum+1))
}
for ((i=0;i<5;i++));do#指定开辟的线程数
echo
done >& 6 #事实上就是在fd6中放置了5个回车符
for ((i=0;i<5;i++));do#放入后台并发循环5次
read -u 6
{
for((j=0;j<7;j++));do#fun3执行的次数
{
fun3
echo "lllllllllllll"
}
done
echo $t_sum;
t_sum=0;
echo >& 6 #当进程结束以后,再向fd6中加上一个回车符,即补上了read -u6减去的那个
}&
done
wait
exec 6>-#关闭fd6
相关文章推荐
- (7)java5线程并发库的应用(线程池) 以及在实际项目中的使用。。
- GCD的定义及使用详解(同步异步、并发串行、线程间通信、延时执行、只执行一次代码)
- iOS 关于dispatch_semaphore_t(信号量) 和 dispatch_group_t (组) 线程执行顺序的使用
- 关于线程的几个方法的使用说明
- C# 执行固定个数任务自行控制进入线程池的线程数量,多任务同时但是并发数据限定
- (安卓APP)关于使用偏好设置储存数据,首次登录应用到新手指导页,再次登录直接到主页面简单的相关实现代码
- 线程同时执行一个函数 使用临界区 14.4.29
- Java实例说明 100个线程同时向一个银行账户中存入1元钱,在没有使用同步机制和使用同步机制情况下的执行情况
- shell(2):shell中关于if,while,输入参数,函数,c++进程等相关知识应用汇集事例
- 关于redis的一些问题,事物方面,线程,在项目中的应用等几个点
- 多线程异步编程(1):创建多个线程执行任务,同时更新进度条,使用WaitHandle发送信号
- WebService(二)-->关于 WebService 的几个问题和重要术语及相关工具使用(多图)
- GCD的简单使用,开辟一条新的线程,让上面的任务串行执行
- 关于在子线程中在run方法执行完之后通知主线程进行操作的方法。(Toast在子线程中无法使用)
- 关于Spring容器中定时器到时执行会出现两个线程同时执行的问题
- C# 执行固定个数任务自行控制进入线程池的线程数量,多任务同时但是并发数据限定
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- shell 并发多进程同时执行
- 线程池(thread pool),允许有多个线程同时存在,并发执行,并且这些线程受到统一管理。
- 多线程异步编程(2):创建多个线程执行任务,同时更新进度条,使用观察者模式,利用事件通知界面更新。移除对Form的引用,彻底解除界面与逻辑的耦合