十万个为什么 发表于 2020-4-8 10:02:53

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

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

sdswjxzf 发表于 2020-4-28 14:34:09

感谢分享

yzz110299 发表于 2020-5-30 14:24:54

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

masa0324 发表于 2020-11-21 13:51:39


这东西我收了!谢谢楼主!易语言吧真好!

bewift 发表于 2021-3-10 15:15:24

学习一下

yyz860723 发表于 2021-5-29 00:23:57

楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
页: [1]
查看完整版本: 什么是进程?什么是线程?