$thread - 并发编程

  • 更新时间:2025-12-13 11:58:47

并发编程

本平台支持多线程并发编程,并且很多API内部都已经解决了并发问题

界面(任务回调)

在UI线程中执行

其实也可以使用$界面.运行(()=>{});在界面线程中执行

  • 参数 : 任务回调 {()=>{}} 任务

  • 版本 : 1.7.0

$线程.界面(()=>{
    //这里是UI线程
});

运行(任务回调)

创建并且运行线程

  • 参数 : 任务回调 {()=>{}} 任务

  • 返回 : {Threadx} 增强线程

  • 版本 : 1.7.0

定义 线程 = $线程.运行(()=>{
    //耗时任务
});
//要想停止或者关闭
线程.停止();

创建(任务回调)

创建线程

会自动生成线程名称,之后将线程名称和线程对象存储到序列中。

  • 参数 : 任务回调 {()=>{}} 线程任务

  • 返回 : {Threadx} 增强线程

  • 版本 : 1.7.0

定义 线程 = $线程.创建(()=> {
    循环 (定义 下标 = 0; 下标 < 10; 下标++) {
        睡觉("300");
        日志(线程.名称()+"==>"+下标);
    }
    日志(线程.名称()+"执行完毕");
});
线程.开始();

创建(线程名称, 任务回调)

创建线程

优先去序列中查找是否存在这个线程名称,如果存在,会提示名称重复并且返回已经存在的线程对象(threadx)

  • 参数 : 线程名称 {字符串} 线程名称

  • 参数 : 任务回调 {()=>{}} 线程任务

  • 返回 : {Threadx} 增强线程

  • 版本 : 1.7.0

定义 线程 = $线程.创建("线程名称",()=> {
    循环 (定义 下标 = 0; 下标 < 10; 下标++) {
        睡觉("300");
        日志(线程.名称()+"==>"+下标);
    }
    日志(线程.名称()+"执行完毕");
});
线程.开始();

新建倒计时锁(数量)

创建一个倒计时锁

  • 参数 : 数量 {整数} 倒计时数量

  • 返回 : {CdLock} 倒计时锁

  • 版本 : 1.8.3

有(线程名称)

是否存在线程名称

  • 参数 : 线程名称 {字符串} 线程名称

  • 返回 : {布尔值} 是否存在

  • 版本 : 1.7.0

定义 有 = $线程.("线程名称");
如果(){
    //存在线程名称
}否则{
    //不存在线程名称
}

获取(线程名称)

获得已存在的线程

  • 参数 : 线程名称 {字符串} 线程名称

  • 版本 : 1.7.0

//获得线程对象
定义 线程 = $线程.获取("线程名称");
if(线程!=){
    //...
}

循环(循环器名称, 执行回调)

创建一个循环执行器

  • 参数 : 循环器名称 {字符串} 循环器名称

  • 参数 : 执行回调 {()=>{}} 循环体

  • 返回 : {Threadx} 增强线程

  • 版本 : 1.7.0

定义 线程 = $线程.循环("循环1号",()=>{
    睡觉(1000);
    日志("我还活着!");
});
线程.开始();

有循环(循环器名称)

是否存在循环执行器

  • 参数 : 循环器名称 {字符串} 循环器名称

  • 返回 : {布尔值} 是否存在

  • 版本 : 1.7.0

//关闭循环器
定义 存在 = $线程.有循环("循环1号");

停止循环(循环器名称)

停止循环执行器

  • 参数 : 循环器名称 {字符串} 循环器名称

  • 版本 : 1.7.0

//关闭循环器
$线程.停止循环("循环1号");

停止(线程对象)

停止指定线程

如果停止线程成功,会将增强线程中的布尔标识(设置布尔())设置为false

  • 参数 : 线程对象 {Threadx} 增强线程

  • 版本 : 1.7.0

停止(线程名称)

停止指定线程

  • 参数 : 线程名称 {字符串} 线程名称

  • 版本 : 1.7.0

停止所有()

停止所有线程

  • 版本 : 1.7.0

//停止所有线程(不包括循环器线程)
$线程.停止所有();

停止所有循环()

停止所有循环执行器

'setInterval'本质上也是通过循环执行器实现的,因此本函数也可以停止'setInterval'的循环执行

  • 版本 : 1.7.0

//停止所有循环执行器
$线程.停止所有循环();