⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umainform.pas

📁 本模型是在内存中创建 n 个工人线程, 1. 在无任务时处于休眠状态,不占用CPU时间, 2. 在有任务时,被唤醒,取得任务,完成任务后,又自动休眼.
💻 PAS
字号:
unit uMainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uThreadManager;

type
  TfrmMainForm = class(TForm)
    grp1: TGroupBox;
    btn1: TButton;
    btnStop: TButton;
    grp2: TGroupBox;
    btnAdd: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btnStopClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    ThreadManager: TThreadManager;
  public
    { Public declarations }
  end;

var
  frmMainForm: TfrmMainForm;

implementation

uses uPubStructs;

{$R *.dfm}

procedure TfrmMainForm.btn1Click(Sender: TObject);
begin
  ThreadManager := TThreadManager.Create(3);

  Application.MessageBox('启动完毕', PChar(Self.Caption), MB_OK +
    MB_ICONINFORMATION + MB_TOPMOST);
end;

procedure TfrmMainForm.btnStopClick(Sender: TObject);
begin
  if Assigned(ThreadManager) then
    FreeAndNil(ThreadManager);

  Application.MessageBox('已终止', PChar(Self.Caption), MB_OK +
    MB_ICONINFORMATION + MB_TOPMOST);

end;

procedure TfrmMainForm.btnAddClick(Sender: TObject);
var
  i: integer;
  Task: PTask;
  SourceStream: TMemoryStream;
begin
  if not Assigned(ThreadManager) then
    ThreadManager := TThreadManager.Create(3);

  SourceStream := TMemoryStream.Create;
  //Sleep(5000);
  for i := 0 to 80000 do
  begin
    New(Task);
    Task^.FID := i;

    Task^.FCMD := IntToStr(I) + #13#10;
    SourceStream.Write(Task^.FCMD[1], Length(Task^.FCMD));
    ThreadManager.SetTask(Task);
  end;
  SourceStream.SaveToFile('.\SourceStream.txt');
  FreeAndNil(SourceStream);
end;

procedure TfrmMainForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if Assigned(ThreadManager) then
    FreeAndNil(ThreadManager);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -