首页 > 系统相关 >bash shell多线程方案

bash shell多线程方案

时间:2024-12-05 14:32:59浏览次数:5  
标签:task tasks jobs echo shell 线程 多线程 local bash

一般多线程

#!/bin/bash
function task {
    echo "Starting task $1"
    sleep $1
    echo "Task $1 completed"
}

# 启动多个后台任务
task 1 &
task 2 &
task 3 &

# 等待所有后台任务完成
wait

echo "All tasks completed"


线程池的实现

#!/bin/bash

# 定义任务函数
function task {
    local id=$1
    local duration=$2
    echo "Task $id started, will run for $duration seconds"
    sleep $duration
    echo "Task $id completed"
}

# 任务队列(这里定义任务的id和运行时长)
tasks=(
    "1 5"
    "2 3"
    "3 2"
    "4 7"
    "5 1"
)

# 定义线程池大小
THREADS=3

# 创建一个函数来管理线程池
function run_pool {
    local -n tasks=$1
    local threads=$2
    local current_jobs=0

    # 循环处理任务
    for task_info in "${tasks[@]}"; do
        # 检查当前正在运行的任务数量
        while (( current_jobs >= threads )); do
            # 等待某个任务完成
            wait -n
            (( current_jobs-- ))
        done

        # 启动新任务
        {
            task $task_info
        } &
        (( current_jobs++ ))
    done

    # 等待所有任务完成
    wait
}

# 调用线程池管理函数
run_pool tasks $THREADS

echo "All tasks completed"

线程锁的实现

标签:task,tasks,jobs,echo,shell,线程,多线程,local,bash
From: https://www.cnblogs.com/sesmof/p/18588505

相关文章

  • shell——获取当前日期的shell脚本
    以下是几种获取当前日期的Shell脚本示例,并且会对其进行解释:示例一:简单获取当前日期(格式:年-月-日)#!/bin/bash#使用date命令获取当前日期,格式为年-月-日current_date=$(date+%Y-%m-%d)echo"当前日期是:$current_date"解释:#!/bin/bash:指定该脚本使用Bash作为解释器......
  • 红队/白帽必经之路(18)——如何用Metasploit 制作Windows恶意木马病毒/软件获取shell[
    上节回顾目录上节回顾1.模拟黑客给真正的快播软件加上后门先下载一个正常的快播软件可以下载绿色版本,免安装的快播软件上传到QvodTerminal.exe到kali上对QvodTerminal.exe注入payload后门程序使用绑定了后门的QvodTerminal.exe替换原来的QvodTerminal.e......
  • C++多线程之异步编程机制
    在C++11及以后的标准中,std::promise和std::future是用于在异步编程场景中实现线程间通信的重要工具。它们可以用来传递异步操作的结果,或者在任务完成时通知等待的线程。下面我将详细解释std::promise和std::future的实现机制,并提供一些使用场景和示例代码。实现机制std::pro......
  • shell脚本实战
    学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。笔记只是方便学习,以下内容只涉及学习内容,切莫逾越法律红线。安全见闻,包含了各种网络安全,网络技术,旨在明白自己的渺小,知识的广博,要时时刻刻保持平等的心,很多分类组合有互相包含也属于正常情况,遇到问题就能够举一反三。......
  • go 多线程
    go多线程进程、线程、和协程进程分配系统资源(CPU时间、内存等)基本单位有独立的内存空间,切换开销大线程:进程的一个执行流,是CPU调度并能独立运行的的基本单位同一进程中的多线程共享内存空间,线程切换代价小多线程通信方便从内核层面来看线程其实也是一种特殊的进程......
  • shell编程作业,获取ipv4的地址+crontab定时任务+无限重启Linux+⽤Shell写⼀个计算器+⽤
    公众号:泷羽Sec-尘宇安全声明!学习视频来自B站up主泷羽sec有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击......
  • shell脚本(八)
    #学习视频笔记均来自B站UP主" 泷羽sec",如涉及侵权马上删除文章仅用于学习参考,不要越过法律红线 until循环(1)until循环与for,while循环大体都是一样的,都是do开始,done结束(2)在Shell脚本中,until是一种循环控制结构。它的作用与while循环相反。while循环是在条件为真时执行......
  • shell常用的命令
    sed's/"//g'test.txt|sed'/^$/d'|sed's|\([0-9]\{4\}\)/\([0-9]\{1,2\}\)/\([0-9]\{1,2\}\)|\1.\2.\3|g'|sed's|\([0-9]\{4\}\)-\([0-9]\{1,2\}\)-\([0-9]\{1,2\}\)|\1.\2.\3|g'#时间格式......
  • 在Windows PE(Preinstallation Environment,预安装环境)中集成PowerShell 7,可以为系统管
    在WindowsPE(PreinstallationEnvironment,预安装环境)中集成PowerShell7,可以为系统管理员提供更强大的命令行工具和自动化脚本支持。WindowsPE本身是一个轻量级的操作系统,通常用于系统部署、恢复、维修和故障排除等任务,但它默认只集成了基本的命令行工具和脚本环境(如CMD和批处理......
  • 在 Windows 11 中,WMIC(Windows Management Instrumentation Command-line)工具已被废弃,
    在Windows11中,WMIC(WindowsManagementInstrumentationCommand-line)工具已被废弃,微软推荐使用PowerShell中的Get-WmiObject和Get-CimInstance等cmdlet来替代其功能。不过,WMIC被停用可能会对一些管理和自动化任务造成影响,尤其是在一些自动化脚本或企业环境中,管理员习......