为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 易语言视频教程 正文

《易语言多线程》高清视频

三叶资源网 2017-10-27 14:19:47 易语言视频教程 6520 ℃ 32 评论
第一课:磨刀不误砍柴工
准备工具:
有道云笔记
易语言5.71
MSDNhttp://sanye.cx/?id=968
有道词典
易语言助手
或 EVA插件
WINAPI转易 http://www.sanye.cx/?id=970
课程目标:
了解多线程常用API,
了解多线程必备知识概念
多线程安全问题(操作共享资源)
第二课:栈(用数组实现栈)
栈是一种后进先出(LIFO,last in first out)的数据结构。
栈是一种特殊的线性表,是一种只允许在一端进行插入或删除操作的线性表。允许进行插入、删除操作的一端称为栈顶,另一端称为栈底。
栈顶的当前位置是动态的,当栈中没有数据元素时,称为空栈。栈的插入操作称为进栈或入栈,栈的删除操作称为退栈或出栈。
栈分为向上增长(压栈时地址增加,即递增堆栈)和向下增长(压栈时地址减小,即递减堆栈)
判断栈是否满
判断栈是否为空
入栈
出栈

获得栈顶元素

第三课:队列(数组实现队列)
队列(queue)是一种先进先出(FIFO,first in first out)的数据结构。
队列只允许在后端/尾部进行插入操作,在前端/头部进行删除操作。
利用数组按下标进行顺序存储、删除、插入元素的特点,可在数组的末尾插入元素,在数组的首部删除元素。这样可使用数组来实现队列功能。0
判断队列是否满
判断队列是否为空
入列

出列

第四课:多线程的基本概念与线程的实现
进程是资源管理的最小单位,线程是程序执行的最小单位。
每个进程有自己的数据段、代码段和堆栈段。线程通常叫做轻型的进程。它包含独立的栈和CPU寄存状态,线程是进程的一条执行路径,每个线程共享其所附属进程的所有资源,包含打开的文件、内存页面。信号标识及动态分配内存等。
因为线程和进程比起来很小,所以相对来说线程花费更少的CPU资源。
在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持多处理器,并且减少进程上下文切换的开销。
线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。一个进程至少需要一个线程作为他的指令执行体,进程管理着资源(比如CPU、内存、文件等等)。而将线程分配到某个CPU上执行。
线程按照其调度者可分为用户级线程和内核级线程两种。
用户级线程:主要解决的是上下文切换的问题,其调度过程由用户决定。(程序开发者)用户级线程要绑定内核级线程运行。
内核级线程:由内核调度机制实现
默认情况下不能保证新线程和调用线程的执行顺序(例程:赛跑)证实了线程执行顺序根据系统调度
每个进程内部的不同线程都有自己的唯一标识(ID)
线程标识只在它所属的进程环境中有效

Sleep(延时)线程告诉系统,自己在一段时间内不要被系统调度。

第五课:线程的调度和线程优先级

线程优先级相同的情况,CPU可以运行一个线程大约20ms。而在系统中的线程有不同的优先级,这将影响调度程序如何选择下一个可调度线程。系统分配CPU时,会先分配给优先级高的线程,那这样岂不是会造成优先级低的线程得不到执行吗?错了,因为大多数线程都是不可调度的。
创建一条挂起的线程
设置线程优先级
获取线程优先级
恢复线程

等待线程

第六课:终止线程和完善多线程常用的API
关闭内核对象 closehandle   如果不关闭句柄的话,可能会造成资源(比如说内核对象)泄露。
挂起线程 127次  挂起3次我们就需要恢复3次
推荐:线程函数返回
ExitThread     该函数将终止线程的运行,并导致操作系统清除该线程使用的所有操作系统资源
TerminateThread      与ExitThread 不同,ExitThread 总是撤消调用的线程,而Terminate 能够撤消任何线程。如果使用TerminateThread ,那么在拥有线程的进程终止运行之前,系统不撤消该线程的堆栈。Microsoft故意用这种方法来实现TerminateThread 。如果其他仍然正在执行的线程要引用强制撤消的线程堆栈上的值,那么其他的线程就会出现访问违规的问题。
GetExitCodeThread
了解API
switchtothread
SetThreadAffinityMask

PostThreadMessage

第七课:线程安全,线程同步与线程互斥的概念

银行取款操作   账号金额10000块钱   两个人拿着主卡和副卡同一时间去取款机取10000块钱

第八课:互斥锁
互斥锁是用加锁的方法来控制对共享资源的访问,在同一时刻只能由一条线程拥有互斥锁,拥有互斥锁的线程,才能对共享资源进行访问,其他线程等待,直到拥有互斥锁的线程释放互斥锁为止。
创建互斥锁
加锁
释放锁
打开互斥锁

关闭句柄

第九课:信号量的基本概念和互斥

信号量从本质上来说是一个非负整数的计数器,通常来控制对共享资源的访问。
信号量可以实现线程的同步和互斥。
信号量规则:
如果当前资源计数大于0,那么信号量处于触发状态
如果当前资源计数等于0,那么信号量处于未触发状态
系统绝对不会让当前资源计数变为负数
当前资源计数绝对不会大于最大资源计数
创建信号量
打开一个信号量
释放信号量     此API函数会将lReleaseCount的值加到信号量的当前资源计数上
等待信号量    会让信号量当前资源计数-1

关闭句柄

第十课:许可证

实际情况下,等待许可证的线程,绝对不会等待超时。
创建许可证
进入许可证             会让调用线程进入等待状态   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager   CriticalSectionTimeout
尝试进入许可证      不会让调用线程进入等待状态,根据返回值判断

退出许可证

删除许可证

第十一课:读写锁

许可证缺少读并发性
应用于多读少写的的应用程序
SRWLock锁的目的和关键段相同:对一个资源进行保护,不让其他线程访问它。但是,与关键段不同的是:SRWLock锁分为读取者线程和写入者线程。读取者线程在同一时刻可以访问共享资源,这是因为读取资源并不存在破坏资源的风险。只有当写入者线程想要对资源进行更新的时候才需要进行同步。在这种情况下:写入者线程独占对资源的访问权。
写入者线程需要独占对共享资源的访问
读取者线程可同一时刻访问共享资源
初始化读写锁
写锁
释放写锁
读锁
释放读锁

R 成功
R 成功

R 成功
W 失败

W 成功
R 失败

W 成功

W 失败

第十二课:原子锁

所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何的上下文切换。(线程安全)
InterlockedIncrement                       以原子操作的形式递增指定变量的值并存储结果。
InterlockedDecrement                      以原子操作的形式递减指定变量的值并存储结果。
InterlockedExchange                    赋值     返回赋值前的数值
InterlockedExchangeAdd              运算,   返回运算前的数值
InterlockedCompareExchange         返回运算前的数值
LONG __cdecl InterlockedCompareExchange(  __inout  LONG volatile* Destination,    __in     LONG Exchange,  __in     LONG Comparand);

Destination,参数的值和 Comparand的值进行对比,如果相等则把第二个参数Exchange值赋值给Destination,否则无操作

第十三课:改造和完善多线程模块并实战

备注:
多线程查询数据,实战了解许可证的用法
第十四课:多线程手动输入验证码
第十五课:(完结篇)

资源下载:

文件下载

Tags:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

已有32位网友发表了看法:

  • 链接失效

    链接失效  评论于 [2018-03-03 06:00:36]  回复

    你好,网盘链接失效了,可以更新下么,多谢站长大大了

  • 访客

    访客  评论于 [2018-08-09 17:09:18]  回复

    感谢分享。

  • 娱乐网

    娱乐网  评论于 [2018-09-15 15:53:56]  回复

    易语言多线程

  • 三叶网

    三叶网  评论于 [2019-02-25 12:10:23]  回复

    易语言 多线程教程

  • 三叶网

    三叶网  评论于 [2019-04-21 17:40:20]  回复

    易语言多线程教程

  • 资源网

    资源网  评论于 [2019-04-29 11:14:03]  回复

    易语言多线程延时

  • redis

    redis  评论于 [2020-03-28 11:48:39]  回复

    易语言+多线程+教程

  • 易语言

    易语言  评论于 [2020-04-17 20:29:55]  回复

    易语言线程池教程视频

  • 资源站

    资源站  评论于 [2021-06-09 22:50:25]  回复

    易语言EVA助手

  • shark

    shark  评论于 [2022-01-23 12:59:08]  回复

    关键资源没失效,解压密码是不对的。。。

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
取QQ昵称RFID读卡器网页POST两点坐标取角度源码telegram模拟器群控类源码link配置器过滤HTML终极版哈希表文件编码检测自动检查更新易语言基础教程捆绑程序动画框应用例程文字识别游民星空鱼刺http多线程百度登录电脑QQTCP套接字幻影动图特效
最新评论