AIWROK软件实用型多线程脚本运行20秒后停止

101

主题

190

回帖

978

积分

管理员

积分
978

var threads = [];

function 计划任务(函数, 运行时间){
var t = new thread();
threads.push(t);
t.runJsCode( () => {
函数();
}, "计划任务")

sleep.second(运行时间);
t.stop();
}

function 脚本1(){
while(true){
printl("脚本1")
sleep.second(1);
}
}

function 脚本2(){
while(true){
printl("脚本2")
sleep.second(1);
}
}

function 脚本3(){
while(true){
printl("脚本3")
sleep.second(1);
}
}

// 异步监控总运行时间然后全部停止
new thread().runJsCode( () => {
// 总运行30秒后停止
for (var i = 30; i > 0; i--) {
sleep.second(1);
printl("倒计时:" + i);
}
stopAll();
printl("全部停止");
}, "总时间线程")

// 脚本1运行20秒后停止
计划任务(脚本1, 20)

// 脚本2运行20秒后停止
计划任务(脚本2, 20)

// 脚本3运行30秒后停止
计划任务(脚本3, 30)

1.png 2.png



代码详细解释

  1. 定义脚本函数
function 脚本1(){
   while(true){
      printl("脚本1")
      sleep.second(1);
   }
}

function 脚本2(){
   while(true){
      printl("脚本2")
      sleep.second(1);
   }
}

function 脚本3(){
   while(true){
      printl("脚本3")
      sleep.second(1);
   }
}


    • 脚本1、脚本2、脚本3:这三个函数都是无限循环的脚本,每秒会打印一次其名称。printl假设是一个用于打印日志的函数,sleep.second(1)表示让当前线程休眠1秒。
  1. 计划任务函数
function 计划任务(函数,运行时间){
    var t=new thread();
    t.runJsCode( () => {
        函数();
    }, "计划任务")

    sleep.second(运行时间);
    t.stop();
}


    • 计划任务:这个函数用于启动一个脚本并在指定的时间后停止它。它接受两个参数:一个是要执行的函数(如脚本1脚本2脚本3),另一个是该脚本运行的时间(以秒为单位)。
    • 创建一个新线程t,并使用t.runJsCode在该线程中运行传入的函数。
    • 主线程休眠指定的运行时间秒后,调用t.stop()停止该线程。
  1. 总时间线程
new thread().runJsCode( () => {
    // 总运行30秒后停止
    sleep.second(30)
    stopAll();
    printl("全部停止");
}, "总时间线程")


    • 创建了一个名为“总时间线程”的新线程,该线程将在30秒后执行以下操作:
    • 调用stopAll()函数停止所有正在运行的脚本。
    • 打印“全部停止”。
  1. 启动计划任务
计划任务(脚本1, 20)
计划任务(脚本2, 20)
计划任务(脚本3, 20)


    • 使用计划任务函数分别启动脚本1、脚本2和脚本3,并指定它们在20秒后停止。

用处说明

这段代码的主要用途是实现多任务的异步管理和定时停止。具体来说,它有以下几个用处:

  1. 多任务管理
    • 可以同时运行多个任务(脚本),并且每个任务可以在独立的线程中执行,互不干扰。
  1. 定时任务
    • 每个任务可以根据需要设置运行时间。例如,脚本1、脚本2和脚本3都设置在20秒后停止,而“总时间线程”则在30秒后停止所有任务。
  1. 自动停止
    • 通过设置不同的停止时间,可以自动控制任务的生命周期,无需手动干预。
    • 例如,如果需要监控某个系统在一段时间内的行为,可以使用这种方法启动多个监控脚本,并在设定的时间后自动停止它们。
  1. 灵活性
    • 可以根据需要添加更多的脚本和计划任务,只需调用计划任务函数并传入相应的参数即可。

举报 回复