脚本单线程
① 刚接触按键精灵想写个多线程脚本就是不知道怎么样用多线程格式
按照需求C和D应该是不用开线程的,A、B同时运行,B找完东西运行C,C运行完运行D,也就是说B、C、D单线程就行了,A自己一个线程
如果你有单独的问题可以追问,如果是想要完整的教程还是建议去相关论坛去多找找
② bat脚本 启动和关闭java线程
我以前的做法是在线程中开一个socket, ip是127.0.0.1 端口自定,每次while循环都查询此socket。
在执行 shutdown.bat时, 向此socket发送一个标志, 主线程收到此标志后,则完全退出,
关闭线程。
③ 脚本单线程运行没问题,多线程运行出现错误率,是脚本的问题还是系统的问题
很多朋友在WIN2000或XP下安装软件时,有时会提示“安装程序启动安装引擎失败:不支持此接口”,导致无法安装(安装引擎,,比如microsoft的Windows Install Service.之类的,,也可能是其它安装器的引擎)。 方法一:请检查是否具有管理员的权限? 方法二:可能是系统文件损坏或被修改,请尝试用SFC命令修复一下。 用参数 scannow 立即扫描所有受保护的系统文件。 一次扫描所有受保护的系统文件。 方法三:是否安装了其它有冲突的软件,如安装了(网络)IE搜索伴侣和ACDSEE5.0(特别是迷你中文版),有时就会导致这种现象,请卸掉5.0,找个其它版本(如4.0)的装一下。 网上有一个版本的ACD See 5.0中文版对Windows 有一个严重的摧毁作用,这个版本有一个特殊的标记:就是它的图标(ico)上面有一个小小的五星红旗。 安装了这个版本后,Windows的组件服务将被破坏,IIS的asp程无法运行,另外,许多程序装时会出错,提示“安装程序启动安装引擎失败,不支持此接口!”,可以卸载这个版本的和搜索工具和ACD See,删除[HKEY_LOCAL_MACHINE\software\]下面的网络工具和ACD See项 方法四:有的软件安装需要windows installer支持,一般解决方法为:在控制面板->管理工具->服务中,找到 windows installer服务,把启动类型改为手动,然后启动即可。记住在安装好程序后将此服务停止。如果仍然存在问题,请到微软站点下载最新的windows installer 2.0版。 方法五:安装文件是单线程的,查看正在运行的进程,如果里面有ikernel.exe,则表示现在无法安装,结束此进程,然后再安装就OK了。 方法六:因为NORDON杀毒软件会把INSTALL SHIELD 那个ikernel.exe文件误认为病毒。退出防火墙,重新启动,就好了。 方法七:进入系统所在分区program files -> common fiels -> installshield -> engine -> 6 - > intel32,把这个文件夹中的文件全部删除(或直接把engine整个文件夹都删了),重新启动,然后再安装。 方法八:安装NORTON SYTEMWORKS 2003,用它的WINDOCTOR自动修复,然后用了NORTON SYTEMWORKS的ONE BUTTON CHECKUP,重启。 方法九:现在的好多的软件的安装程序都不是exe的而是msi,而msi是一种新的安装程序的脚本文件。就算有的安装程序是exe的但在它的安装目录里也有个msi文件,实际上是exe调用msi文件来安装程序的。msi是脚本文件,实际上真正运行脚本文件的是“msiexec.exe”它就是一切问题的原因。需要安装instmsiw.exe这个文件,instmsiw.exe是一个压缩包里面包括了所有关于运行msi所需要的文件。运行后问题就可解决了。 方法十:当然是重装系统啦,前九种方法均无效时也只有这样做了。
④ cocos2dx socket lua 是单线程的吗
上层调用socket 是非阻塞的 你执行的时候 很快就会执行到下一行 但是消息不一定就立马发出去了 一般网络和io这类比较费时的操作 开放给脚本使用 大多都是非阻塞的 因为lua本身对线程的操作很弱 如果在这里处理这些长时间的操作 就会导致页面被卡住 体验很差
⑤ 按键精灵(如何把截到的图放进附件里)为什么路径是Attachment:\未命名.bmp
“按键精灵安卓版”关于“多线程”的理解
我平时写脚本基本上是不用多线程的,一是我写长期运行的脚本不多,没有多线程的需求,二是多线程容易造成脚本卡顿。
当然我不用不代表别人也不用,最近就看到群里有一些朋友在问关于多线程的问题,确实对于新手朋友来说容易出问题。
下面就说一下我对于多线程的一些理解:
(一)什么是主线程、什么是子线程
先说一个误区:相信很多新手朋友会觉得主线程是这样的:
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 函数() //正确写法
(七)哪些地方可能会用到多线程
我们以双线程为例,一般来说主线程会做非操作性的功能,子线程做具体操作功能。
非操作性的功能,比如:
①检测卡顿
②实时屏幕显示内容
③心跳检测
这些操作有一个共同的特点,不影响界面上原有的其他操作。
⑥ 按键精灵运行多线程脚本卡
看样子是逻辑混乱或者没有循环代码,回头给你看看,我先洗澡。
我刚刚简单测试了下,貌似没问题啊,并不会卡死
另外你说的功能其实不用多线程的,或者说一个子程序或主程序就能达成
单线程版:
BeginThreada
Do
Delay1000
Loop
Suba
For300
KeyPress"E",1
Next
KeyDown"W",1
Delay1000
KeyUp"W",1
Delay500
KeyDown"S",1
Delay1000
KeyUp"S",1
EndSub
主程序版:
For300
KeyPress"E",1
Next
KeyDown"W",1
Delay1000
KeyUp"W",1
Delay500
KeyDown"S",1
Delay1000
KeyUp"S",1
⑦ php是单线程非阻塞吗
PHP支持多线程,也可以阻塞,根据需要选择编写不同的代码。
⑧ Unity3d中的脚本是多线程还是单线程
看具体代码,你写单线程就是单线程,写多线程就是多线程,C#语言写的,只是unity的多数api只能在主线程调用
⑨ JS脚本通过什么方法可以实现多线程
虽然javascript是单线程的,但是浏览器是多线程的,典型的浏览器有如下线程:
javascript引擎线程
界面渲染线程
浏览器事件触发线程
Http请求线程
javascript单线程指的是javascript引擎线程单线程处理它的事件队列,而浏览器是事件驱动的,很多事件都是异步的,比如鼠标点击事件,setTimeout,Ajax回调事件,当这些事件发生时,浏览器会将这些事件放入执行队列,待浏览器空闲时再执行。
另外,值得一提的是,ajax调用确实是异步的,浏览器会启动一个新线程来想服务端发送请求,如果设置了回调事件,会根据服务端返回状态将回调事件放入事件队列。
⑩ 给按键小精灵设置试用时间的脚本的 超过这个时间就停止
您好,哪位网友技术明显不够,可以使用延时命令,采用多线程,代码如下:
BeginThread 试用
Sub 试用
Delay 60000 * 30 //这里的30是指30分钟的意思,根据需要自己修改
ExitScript
End Sub
这个比较适合新手,把这个代码“BeginThread 试用”放到脚本需要开始计时试用时间的位置即可!如果帮到你请及时采纳,很高兴为您解答!