好学若饥 - 让我们共同前行!

好学网



当前位置: 好学网首页 > IT教育 > 编程开发 >

delphi中基于事件通知的多线程应用之软件考试-好学网

时间:2010-09-23 21:36来源: 作者: 点击:
delphi中基于事件通知的多线程应用由好学网提供,查找更多delphi中基于事件通知的多线程应用请访问。

delphi中基于事件通知的多线程应用

时间: 2010-11-8   
  以前写过写多线程,往往是一个死循环中采用sleep来把释放cpu的时间片,这几天写了个基于Event通知的线程,应用起来还不错,就帖上来,希望大家多多指教,见笑了.
//--
  //处理数据线程父类,实现方法由子类完成
  //Addbyhua2010/08/07
  //--
TPlayThread=class(TThread)
private
HEvent:THandle;
CS_Memory:TRTLCriticalSection;
FData:arrayofbyte;
FManager:TManager;
FMemory:TMemoryStream;
FReadPos:integer;
procedureplay;virtual;abstract;
functionReadData:Boolean;virtual;
procedureClearData;
public
constructorcreate(AManager:TManager);
destructordestroy;override;
procedureexecute;override;
procedureWriteData(varABuffer;ASize:DWORD);virtual;
end;

  //视频数据处理线程
TVideoPlayThread=class(TPlayThread)
private
procedureplay;override;
end;

  //音频数据处理线程
TAudioPlayThread=class(TPlayThread)
private
procedureplay;override;
end;

  //礼物数据处理线程
TPresentPlayThread=class(TPlayThread)
private
CHAT_Present:TCHAT_Present;
functionReadData:Boolean;override;
procedureplay;override;
public
procedureWriteData(varABuffer;Asize:DWORD);override;
end;
implementation

  //以下为功能实现部分
{TPlayThread}
procedureTPlayThread.ClearData;
begin
FReadPos:=0;
FMemory.Clear;
end;
constructorTPlayThread.create(AManager:TManager);
begin
InitializeCriticalSection(CS_Memory);
HEvent:=CreateEvent(nil,False,False,nil);
FManager:=AManager;
FMemory:=TMemoryStream.Create; (责任编辑:haoxuee)

      学友请扫描下方二维码,或微信搜索公众号 haoxueecom 获取更多学习生活资讯!
     好学网微信公众号

赞一个
(0)
0%
嘘一下
(0)
0%
------分隔线----------------------------