什么是进程?什么是线程?

admin7年前 (2020-04-08)图文教程5091
我们每次打开软件运行,操作系统的任务管理器里就会显示这个新的进程。当我们把这个进程结束之后,对应的软件也就挂了。被你结束掉的东西就是一个进程,是程序的实体,
是操作系统进行资源分配和调度的基本单位,是线程的容器。
线程是程序执行流的最小单元。
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、要考虑打码接码平台的限制,网站的限制,代理提取网站的限制等