【按键精灵安卓版】关于“多线程”的理解

您所在的位置:网站首页 按键精灵一定要root吗安卓版本 【按键精灵安卓版】关于“多线程”的理解

【按键精灵安卓版】关于“多线程”的理解

2024-07-16 07:12:08| 来源: 网络整理| 查看: 265

我平时写脚本基本上是不用多线程的,一是我写长期运行的脚本不多,没有多线程的需求,二是多线程容易造成脚本卡顿。

当然我不用不代表别人也不用,最近就看到群里有一些朋友在问关于多线程的问题,确实对于新手朋友来说容易出问题。

下面就说一下我对于多线程的一些理解:

(一)什么是主线程、什么是子线程

先说一个误区:相信很多新手朋友会觉得主线程是这样的:

Function 主程序()

  //这里面是我的脚本主要的功能操作

End Function

这明显是错误的,在多线程脚本中,区分主线程的方法是看它是不是不在function或者sub内部,只要没在函数内部的就是主线程。至于说取个主程序或者主线程这类名字,和它是不是主线程没有一点关系。

上面说的是主线程,再来说说子线程是什么?

只要用Thread.Start启动的都是子线程。比如:

Thread.Start 主程序

Function 主程序()

  //这里面是我的脚本主要的功能操作

End Function

当然没有启动的函数就不算了。

(二)子线程可以有多少个?

从语法角度来说没有限制,你写多少个都可以,但是实际应用中基本上也就一到两个,不会再多了,否则脚本会卡顿,甚至直接崩溃。

(三)我只有一个函数,可不可以启动多个子线程?

可以,一个函数启动两次,就会有两个子线程。比如:

Thread.Start 主程序

Thread.Start 主程序

Function 主程序()

  //这里面是我的脚本主要的功能操作

End Function

这段代码运行以后,脚本是有两个主程序代码同时运行。

通常我们不会这样用,为了防止一个函数被反复使用,会把启动线程赋值给一个变量。

dim h=Thread.Start(主程序)

赋值给一个变量的好处是啥呢?

如果想要停止某个线程的时候,直接用停止线程命令停止对应的变量。

Thread.Stop (h)

(四)子线程能不能关闭或者启动别的子线程?

不能,控制子线程的开启和关闭只能是主线程。如果想要一个子线程控制另外一个子线程,就需要借助共享变量把“控制信号”先发给主线程,然后在让主线程控制另外一个子线程关闭或者开启。

(五)多线程的脚本可以使用全局变量吗?

不可以,有些朋友写了一个单线程的脚本,测试也没问题,后来觉得脚本运行久了可能会出现卡顿的现象,于是想要加个检测卡顿的子线程。可是原本正常运行的脚本没有做任何变化,变成多线程以后就不能用了。

这是因为原本脚本中可能用到全局变量了,变成多线程以后,全局变量失效导致脚本错误。

什么是按键的全局变量?

Dim m=1

Call 函数()

Function 函数()

  TracePrint m

End Function

上面这段代码中变量m是在函数外面定义的,这个就是按键的全局变量。同理还有一个局部变量,就是在函数里面定义的变量。

为了减少上面说到的问题,我们尽量定义局部变量。也就是一个函数中用到所有变量尽量在它内容部定义。

(六)子线程中可以调用函数吗?

可以,但是要注意写法,下面说几个多线程中可能会写错的地方。

①启动子线程的时候代码中,子线程名称后面不能有括号

Thread.Start(主程序)  //正确写法

Thread.Start(主程序())  //错误写法

②启动带参数的子线程

Thread.Start(主程序(参数1,参数2))  //错误写法

Thread.Start(主程序,参数1,参数2)   //正确写法

③子程序中调用函数

Call 函数  //错误写法

Call 函数()  //正确写法

(七)哪些地方可能会用到多线程

我们以双线程为例,一般来说主线程会做非操作性的功能,子线程做具体操作功能。

非操作性的功能,比如:

①检测卡顿

②实时屏幕显示内容

③心跳检测

这些操作有一个共同的特点,不影响界面上原有的其他操作。

好了内容基本就是这些,关于多线程我通常会比喻成两个人操作一部手机,屏幕上手指太多很容易乱,最好的方式一个人指挥,一个人操作,不要都上手。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭