我们每次打开软件运行,操作系统的任务管理器里就会显示这个新的进程。当我们把这个进程结束之后,对应的软件也就挂了。被你结束掉的东西就是一个进程,是程序的实体, 是操作系统进行资源分配和调度的基本单位,是线程的容器。 线程是程序执行流的最小单元。 windows操作系统创建进程以后,同时会创建一个线程去执行进程中的代码。通常把这个线程称为该进程的主线程(UI线程)。主线程可以创建其他线程(子线程)。 通俗的讲,进程好比是公司,主线程好比是老板,子线程就是员工。 一个进程的所有线程共享虚拟地址空间、全局变量、以及该进程的操作系统资源。 一个进程中定义了一个变量,把地址传过去,另外一个进程是不能用的。所以在数据交互上,多线程的通信,就没有进程间通信那么复杂了。 当进程被终止时,主线程同时也被终止,当主线程消亡时,其子线程同时也消亡。 什么是多线程? 多条线程同时执行代码。可以是执行相同的代码块,也可以是不同的线程执行各不相同的代码块。这些都是多线程。我们最常用的是多个线程去执行相同的代码块,但是传入的参数不同,也就是处理的数据不同。 CPU四核八线程的意义? 操作系统中运行的线程数量是远远大于CPU的线程数的。其实对于单核CPU本身只有一个核心,同时只能执行一条指令。CPU是在做着高速切换,只是速度很快,你感觉就像是一起进行的。这种CPU只能实现宏观上的并行,微观上一定是串行的。这就好比我一节课同时讲两个网站,但是在某一时刻,我只能在操作一个网站,不然讲不过来。两个老师一起讲,那就不一样了。这就是多核CPU,真正实现微观上并行。 什么是界面假死?为什么会假死? 主线程一般是用来处理窗口消息、响应事件等。当主线程下有大量耗时的代码运行时,主线程无法处理窗口消息,程序界面就会假死。启动线程()可以解决这个问题,循环体中也可以用:处理事件() 延迟、延时、高精度等待和程序_延时的区别 1、延时:易语言自带延时会导致界面假死。如果用在循环体中,一般和处理事件配合,防止界面假死。 2、延迟:易语言自带延迟不引起界面假死,但是很占CPU。 3、高精度等待和模块的程序_延时都还不错,一般就用这两个。 易语言多线程支持库 一、启动线程 1、勾选易语言官方自带多线程支持库 2、当在主线程中处理大量耗时操作时,主线程就没法处理窗口消息,这时候你的界面就会处于未响应状态,也就是假死。把耗时操作放到新启动的子线程里去,主线程可以继续处理窗口消息,可以防止界面假死。 3、这时候子程序不是在主线程中运行,而是在新线程中执行,和主线程互不相关 4、线程句柄 二、关闭线程句柄 关闭线程句柄,顾名思议,是把线程句柄给关闭掉,而不是把线程给关闭掉,这点要分清楚!关闭线程句柄,是为了释放系统资源。关闭了线程句柄的线程能继续执行,但是没了句柄我们已经不能对这条线程进行控制了。 三、多线程特点 1、启动线程(&子程序)和子程序()的区别 启动线程(&子程序)不等待函数返回,子程序()会等待函数执行完毕后再继续往下执行。 2、练习:如何让程序同时弹出四个信息框? 批量计算 四、等待线程 五、强制结束线程 多线程传参 启动线程这个命令只能传递一个参数,并且必须是整数型。但是这个整数你可以是确切的整数数字,也可以是超级列表框表项索引,也可以是数组下标,还可以是一个指针。 1、打开内存文件 2、超级列表框 3、自定义数据类型数组 4、队列 标签反馈事件 利用标签反馈事件,把要操作组件的代码丢给主线程处理 多线程之控制线程数 云外线程池计次换IP 许可证 创建进入许可证 进入许可区 退出许可区 多个许可证的问题 线程安全 1、存钱 2、售票 3、自定义数据类型读写 4、数组增删读写 你要么事先定义好数组(加入好成员到数组),然后在多线程里可以放心操作。 真要是想一边多线程读写,一边增删数组成员,那在所有数组操作的地方加许可证。 易语言类模块 常用模块命令 原子_递增() 线程_创建() 鱼刺类_线程操作 线程.创建() 使用注意点 鱼刺类_线程池Ex 线程池.暂停() 线程池.销毁() 线程池.创建() 线程池.取_空闲线程数() 线程池.投递任务() 线程池.等待任务动态() 线程池.取_状态() 线程池.取_是否空闲() 鱼刺类_队列 队列.取队列长度() 队列.压入文本() 队列.弹出文本() 队列.清空() 鱼刺类_临界许可 许可证.进入() 许可证.退出() 鱼刺线程池计次换IP 鱼刺线程池一号一代理 多线程注意点 1、明确哪些代码是多线程运行代码 2、明确哪些是共享数据(公共资源) 公共资源:全局变量、程序集变量、静态局部变量、组件、本地文件 私有资源:子程序参数、普通局部变量 3、明确哪些代码是操作共享数据的 a) 操作组件和本地文件都加许可证 b) 全局变量、程序集变量、静态变量只读取可不加 c) 全局变量、程序集变量、静态变量有读有写,读写都要加许可证 d) 超级列表框不同时操作同一格,可不加 4、明确哪些代码要用相同的许可证 5、要考虑打码接码平台的限制,网站的限制,代理提取网站的限制等
|