多线程与单线程的区别:
单线程顺序执行:ABCDEFG,HIJKLMN
单线程异步执行:ABC,KLMN,EFGHI,错开执行避免I/O之类的长时间等待卡住线程【WinWait】
多线程:一个进程内可有多个线程ABCDEFG同时执行互不干扰
多进程:创建多个进程ABCDEFG并互相通信,来达到仿多线程的效果。
打包下载地址:
蓝奏云:https://wwp.lanzouj.com/iuRXE1x1r1ba 提取码:ahk6
123网盘:https://www.123pan.com/s/ufi3Td-o0O53.html 提取码:ahk6
代码片段:
/* ═════════════════════════════════════════════════════════════════ 多进程共享函数、连锁关闭并通信 关联进程变量 := New ExecProcess("标签名称") 新建关联进程, 可传参 关联进程变量 := "" 清空这个 "关联进程变量" 来关闭对应的进程 语法参考AHK_H对线程控制的用法,并新增相互通信和进程间互相控制的功能。支持编译运行 新进程默认隐藏托盘图标和禁用热键来避免冲突,恢复热键和控制的方法类库说明里的 F3 和 F4 ═════════════════════════════════════════════════════════════════ */ #Include <ExecProcess> ; 受函数封闭性的影响,只能在脚本头部自行判断是否加载新进程,让新进程正常运行 if (A_Args[10]="演示新进程代码载入") Goto % A_Args[10] Process1 := New ExecProcess("演示新进程代码载入", , , ,"value4") ; 带传参的开启新进程 Gosub 演示新进程代码载入 ; 复用共享标签和函数演示 Return 演示新进程代码载入: Gui -MinimizeBox -MaximizeBox +AlwaysOnTop Gui Add, Edit, w300 R2 v通信显示 g同步发送 Gui Show, % "x850 w330 y" (A_Args[4]="Value4"?500:400), % (A_Args[4]="Value4"?"F2新":"P主") "进程 - 互相通信同步演示,请输入文字" Loop { Sleep 80 MouseGetPos, x, y ToolTip % (A_Args[4]="Value4"?"F2-新":"P-主") "进程持续运算演示-" A_Index, x+10, y-(A_Args[4]="Value4"?30:70) } Return 同步发送: GuiControlGet, 获取编辑框内容,, 通信显示 if (A_Args[4]="Value4") ExecPostFunction( , "Gui同步更新", 获取编辑框内容, "通信显示") ; 第一个参数留空或者填"Parent"是给主进程发送信息 else ExecPostFunction("演示新进程代码载入", "Gui同步更新", 获取编辑框内容, "通信显示") Return Gui同步更新(Value, ControlID) { GuiControl,, %ControlID%, %Value% } GuiClose: ; if (A_Args[9]="") ; 是新进程才触发 ExitApp Return MyLabel: Menu Tray, Icon ; 让新进程显示图标【新进程默认禁用热键以避免冲突】 ; MsgBox, , , % "var变量值:" var, 1 Return F1:: ; ExecAssign("演示新进程代码载入", "var", "123456") ; 给新进程的变量赋值 ExecLabel("演示新进程代码载入", "MyLabel") ; 让新进程跳转至指定标签 if (onoff := !onoff) ExecPause("演示新进程代码载入") ; 暂停指定进程 else ExecPause("演示新进程代码载入", "Off") Return ; F2键做新进程的开、关、一键开关的演示【只有主进程端能够新建进程】 F2:: ; Process1 := New ExecProcess("演示新进程代码载入") ; 不带传参的新建进程 Process1 := "" ; ProcessOnOff:=(Toggle:=!Toggle) ? New ExecProcess("演示新进程代码载入",,,, "Value4") : "" Return
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)