当前位置: 首页 > news >正文

深圳高端品牌网站设计重庆学校网站推广

深圳高端品牌网站设计,重庆学校网站推广,WordPress刷下载量,贵州有哪些公司做网站做得好[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delph…

[简介]
常用网名: 猪头三
出生日期: 1981.XX.XX
QQ: 643439947
个人网站: 80x86汇编小站 https://www.x86asm.org
编程生涯: 2001年~至今[共22年]
职业生涯: 20年
开发语言: C/C++、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python
开发工具: Visual Studio、Delphi、XCode、Eclipse、C++ Builder
技能种类: 逆向 驱动 磁盘 文件
研发领域: Windows应用软件安全/Windows系统内核安全/Windows系统磁盘数据安全/macOS应用软件安全
项目经历: 磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测

[序言]
本次内容主要是学习TMonitor的同步机制, TMonitor是非常强大的, 因为它内置了同步等待(Wait)和唤醒(Pulse)的机制, 使用起来真的是非常灵活.

[下面是经典代码]
主要功能: 利用TMonitor, TQueue相互配合实现了TThreadedQueue的经典案例.

unit Unit1;interfaceusesWinapi.Windows, Winapi.Messages,System.SysUtils, System.Variants, System.Classes, System.Threading, System.SyncObjs,System.Generics.Collections,Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;typeTForm1 = class(TForm)Bn_ReadThread: TButton;Bn_WriteThread: TButton;Memo_Result: TMemo;procedure FormCreate(Sender: TObject);procedure FormShow(Sender: TObject);procedure Bn_ReadThreadClick(Sender: TObject);procedure Bn_WriteThreadClick(Sender: TObject);private{ Private declarations }mpr_ShareQueue   : TQueue<string> ; // 共享数据队列mpr_Thread_Lock  : TObject ;        // 同步锁mpr_Threads_Count: Integer ;        // 写者线程的数量public{ Public declarations }procedure mpu_pro_Thread_Write(const cstr_param_Data : string) ;end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
beginmpr_ShareQueue   := TQueue<string>.Create() ;mpr_Thread_Lock  := TObject.Create();mpr_Threads_Count:= 0;end;// End FormCreate()procedure TForm1.FormShow(Sender: TObject);
begin
//
end;// End FormShow()// 单个读者线程
procedure TForm1.Bn_ReadThreadClick(Sender: TObject);
beginTTask.Run(procedurevarstr_Data : string ;begin// 循环读取while True dobegin// 启动同步锁System.TMonitor.Enter(mpr_Thread_Lock) ;try// 如果共享数据队列没有数据, 那么则通知读者线程进入等待状态if mpr_ShareQueue.Count = 0 thenbeginSystem.TMonitor.Wait(mpr_Thread_Lock, INFINITE) ;end;// 获取数据之后, 同步在界面上显式str_Data := mpr_ShareQueue.Dequeue ;// 界面显式数据TThread.Synchronize(TThread.Current, procedurebeginMemo_Result.Lines.Add(str_Data) ;end);finallySystem.TMonitor.Exit(mpr_Thread_Lock) ;end;end;end);end;// End Bn_ReadThreadClick()procedure TForm1.mpu_pro_Thread_Write(const cstr_param_Data : string) ;
beginTTask.Run(procedurebegin// 随机休眠时间TThread.Sleep((Random(5)+1)*1000) ;// 向共享数据队列添加数据// 启动同步锁System.TMonitor.Enter(mpr_Thread_Lock) ;trympr_ShareQueue.Enqueue(cstr_param_Data) ;// 向读者线程发出信号, 共享数据队列有新数据进入System.TMonitor.Pulse(mpr_Thread_Lock) ;finallySystem.TMonitor.Exit(mpr_Thread_Lock) ;end;end);end;// End mpu_pro_Thread_Write()
procedure TForm1.Bn_WriteThreadClick(Sender: TObject);
varstr_Data : string ;
beginInc(mpr_Threads_Count) ;str_Data := Format('%d 号线程的数据.', [mpr_Threads_Count]) ;Bn_WriteThread.Caption := Format('2: 创建写入线程(%d)', [mpr_Threads_Count]) ;mpu_pro_Thread_Write(str_Data) ;end;// End Bn_WriteThreadClick()

[结尾]
上面的代码, 需要注意的细节是: TMonitor.Wait()和TMonitor.Pulse()的等待与唤醒同步操作.

http://www.yayakq.cn/news/664684/

相关文章:

  • 建设厅网站平顶山源码网站建设步骤
  • 企业 php网站建设兼职网站做任务
  • 哪些网站可以找到做跨境电商的公司前端开发工程师工资
  • 资源网站怎么做泰安seo排名
  • 怀化网站优化公司有哪些网站建设优化的作用
  • 培训网站导航专业的外贸行业网站制作
  • 网站建设与网页设计难学吗做公司的网站的需求有哪些
  • 广东白云手机网站建设怎么做网站生意
  • 河北网站建设制作聊城制作手机网站公司
  • 中国风网站设计企业网页制作公司
  • 衡阳网站建设价格模板网站与定制网站的区别
  • 5188站长平台长沙的网站建设
  • 金汇网站建设网站建设phpcms
  • 网站前端浏览器兼容如何做棋牌网站开发
  • 做阿里巴巴小企业网站深圳龙岗网络科技有限公司
  • 个人建设视频网站制作做投票网站的
  • 国际域名注册网站网站建设 推广企业税率
  • 美食网站素材物联网的应用
  • 保定网站制作哪家好建设医疗网站备案前置审批
  • 互联网做视频网站需要许可证吗玄武区网页设计培训
  • 做健康类网站怎么备案给wordpress替换主题
  • 下载教学设计的网站哪个网站卖自己做的手工艺品
  • 织梦网站建设博客网络公司经营范围能写建材吗
  • 本地网站建设的步骤过程有关做服装的网站吗
  • 淘宝客网站模板免费下载免费的小程序模板网站
  • 中国建设银行网站简介郑州做网站公司汉狮网
  • 商会网站建设方案书中国建筑公司官网
  • 营销网站的推广学做网站论坛
  • 建网站需要多少钱石家庄陕西省建设工程质量安全监督总站网站
  • 小米商城网站建设国内十大网站建设