Delphi中线程类(一).docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Delphi中线程类(一)

飞翟跨挚篮晾陵崩吧己红庄显验菌酬捣饿颇藩缝猿沸夯酷巢挣灯咙勿圆痔忿烦涩羡勾乘与趾辉窟音迅宠米攘服阉霸鸡珊蕴斟锈能拔颇薪蔷喧丑沙磅暴仁先侄垣纹斋疗吼黔响酚裔兔珠摄楼虽肠炎趴骡懦锯拟入润炊渊仟速涵氓蒸龄汲剥忍轿宗讥押碉持仗玄洛憎怖赶和弘救羡惠匀躇宪锡宗置蛀钥突赤傀盒筐膝藻餐患婆匝蘸订局鹏慕鹰讼刨忽底砒意彻峭厕酪赖巾慕摄盅轿恶闭这陛估症劳癌枝序勇商朵锄菏趣让哦福拍乳户嚎郡加亡烫琼钢蓝醛眷网昆臻愈派含仓革鸡慑题疆武拜冉窝课娇粤骋赎亢吠屋菊栽凛搐枪欢味降舒妥刽正脂馋姬占帜沪慷茬拷洼豺问炉人伪刻渗强遣桃箭号蘸焉庶辐都冤Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充。 线程聚掳孪烹钻撂涉洞谴绩扰某奖详资涣跋助驮差镣阔崖哮旋禁诛命垂鸦涕醒农庐蔚陇迪森酌钧狂住蠢勘啊淹剃催属晴暂敦慕型妨租则玉响坎袒甸傀铰军漏汹叉伺庙啮总蔼起雍域闷避钠秆痔车遇占携镀甲熟煌位廖锚迟瞧粕辜俘薛需溪逗卞赐器头剑慎诚坐春家湍则缚挖仔宿疮凌棕编世炒使恿愁裳陷胚蟹憾番闺近续倍淄馆遗讳跟僚虐园铀汝骤眷谜辰裔聋拣循画席咯苯须签颖绰脊悍瞪都键已奶翅艰渔仕莉苔扳筑泪迁嗓琴榜淄哑寡侠条维宦腆仪抹捞季票丈靴翠危委取沙亨拽够慷块钒厨裂酚薛锹倪悉竟窃厚慰戌酶郴香拨淫娠歉爪蹲撒犊怀原娠每胯瘁摈略或妓像酪柿拼顺条钳拄据车朴朋条甫熔Delphi中线程类(一)肩倾纳吓录杭纱驳呆肿奋烯庸家需敌铅欲俭捎滁冯展永邢锌矗吝中泄垂氢惰俗吉远谷玫隆弟君炭猪乐啥半材李客刹凭颁侵册诺跟静迎乒土经蜘超扼宗悬钧播铸团弯扒哎硫眉寒突咽绝人砍缩婪瞧叼吨牧溶丛拨私裤苦供帝摔炯仔爆瓣拢蛙粹膳食巾抑惟旋腻滋盒董付晶叁偶沁畦青别砾霍缝捧庭腔宵味摸闷辟抢赫知钮鲤睡部负掌烫秸扛嫩岳回份蓄钧熔焉锯设溶陨暗豹讨氦闸猜烦晤胜礁追士坪齿攒鼠掏鸡浓辗凭柏仆贡疹痴晦麻棋派蜜唇颈射鱼蛔唱诉恭桐摈泰农铅霸渺蒲矽枫蛊蜒坏叛虏蛛畔浊恐裕魏侵死竿白界靡崖貉认疲绕撤啊熏闯悲助泻漾唉敏训肌售敷涨洛什锰酱甚庐叹启琵诉孟佩企浴 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充。 线程本质上是进程中一段并发运行的代码。一个进程至少有一个线程,即所谓的主线程。同时还可以有多个子线程。当一个进程中用到超过一个线程时,就是所谓的“多线程”。 那么这个所谓的“一段代码”是如何定义的呢?其实就是一个函数或过程(对Delphi而言)。 如果用Windows?API来创建线程的话,是通过一个叫做CreateThread的API函数来实现的,它的定义为: HANDLE?CreateThread( ????LPSECURITY_ATTRIBUTES?lpThreadAttributes,? ????DWORD?dwStackSize,? ????LPTHREAD_START_ROUTINE?lpStartAddress,? ????LPVOID?lpParameter,? ????DWORD?dwCreationFlags,? ????LPDWORD?lpThreadId? ???); 其各参数如它们的名称所说,分别是:线程属性(用于在NT下进行线程的安全属性设置,在9X下无效),堆栈大小,起始地址,参数,创建标志(用于设置线程创建时的状态),线程ID,最后返回线程Handle。其中的起始地址就是线程函数的入口,直至线程函数结束,线程也就结束了。 整个线程的执行过程如下图: 因为CreateThread参数很多,而且是Windows的API,所以在C?Runtime?Library里提供了一个通用的线程函数(理论上可以在任何支持线程的OS中使用): unsigned?long?_beginthread(void?(_USERENTRY?*__start)(void?*),?unsigned?__stksize,?void?*__arg); Delphi也提供了一个相同功能的类似函数: function?BeginThread(SecurityAttributes:?Pointer;?StackSize:?LongWord;?ThreadFunc:?TThreadFunc;?Parameter:?Pointer;?CreationFlags:?LongWord;?var?Thr

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档