1. 预备知识
- {}& 在linux中表示整个代码块放入后台执行
- wait wait命令表示等待所有后台进程执行完成
- FIFO管道文件
2. 实现思路
实现进程池有很多种方式,比如创建文件来判断文件个数等。本文采用了利用fifo文件来实现线程池,同时利用了linux中read命令天然的阻塞来快速实现。
3. 具体实现
创建process_pool.sh,具体脚本如下:
#!/bin/bash
#线程池
process_pool(){
#判断输入参数等
if [ $# -lt 3 ]; then
echo "$0 process_num command [args]"
return 1
fi
_process_num=$1
shift
_func=$1
shift
if [[ ! $_process_num =~ ^[0-9]+$ ]]; then
echo "process_num must be a number"
return 1
fi
if !type $_func ><