老师录像-第十一课深入多线程_第1页
老师录像-第十一课深入多线程_第2页
老师录像-第十一课深入多线程_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

易语言综合技术特训第一阶段:易语言编程第十一课:深入多线程3 ——线程池的实现及线程问题的排查本课内容010203回顾信号量与线程池使用队列实现一个简单的线程池检查线程中的问题1.线程池1.什么是线程池?由于频繁启动线程时,会有一些性能上的消耗。所以对于那些需要频繁启动线程的场合,重复使用现有的线程。避免重复启动线程。不使用的线程会自动进入等待状态,等待新任务。2.线程池的特性?a.执行同一个线程子程序。b.重复使用现有的线程。3.常见的线程池实现?使用完成端口的线程池实现。4.线程池与多线程的区别?a.线程池就是多线程。只是启动和运行的方式不同。b.线程池是重复利用线程,多线程不会重复利用线程。c.都需要进行线程同步。事件对象什么是事件对象?——用来标记两种状态(有信号,无信号)。DLL命令如下:(整数型)CreateEvent ——创建事件对象。(整数型)SetEvent ——置为有信号(整数型)ResetEvent ——置为无信号(整数型)WaitForSingleObject ——等待事件对象什么是信号量?——信号量相当于一个可以有次数的记录的事件对象。(整数型)CreateSemaphore ——创建信号量(整数型)ReleaseSemaphore ——释放信号量(整数型)WaitForSingleObject ——等待事件对象信号量2.实现线程池1.首先需要深入的理解线程池?首先,线程池中拥有多个等待处理工作的线程。线程池中的线程在等待新任务时,不应该占用CPU。当有任务时,执行任务,执行完毕后不退出线程,而是重新等待。2.需要使用到哪些知识?a.等待任务到达。b.取出任务的参数。c.执行任务,然后重新等待任务。3.列举需要的命令:创建线程池加入队列(任务)获取当前执行线程数量。销毁线程池。中场休息线程问题1.多线程在使用的时候,很容易造成程序错误?由于一些代码、模块、没有很好的支持多线程,这可能导致程序在执行时,出现一些奇怪的问题。包括:变量的值不正确,程序异常退出,或者程序报错等。2.如何排查这些错误?由于没有能够直接调试多线程的方法,所以只能采取日志、关键点记录的方法,来记录程序执行时的日志。通过日志进行分析。3.写出日志的命令:a.打开文件,以指定的方法打开一个本地文件。b.写文本行或写出文本,在打开的文件中,写出执行的内容。c.移动文件读写位置。程序在写出内容时,是在当前的“读写位置”进行写出,所以我们必须确定好读写位置后,才能进行读写。d.关闭文件。文件时候后必须要关闭。课堂小作业:将昨天的程序进行修改:1.使用线程池来实现昨天程序中的线程部分。延伸:*为课上的线程池增加”等待的线程超时退出功能”,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论