Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
02.05.2014
Размер:
1.41 Кб
Скачать
unit Unit1;

interface

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

type
TmainForm = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure ThreadsDone(sender:tobject);
end;
tfoothread=class(tthread)
protected
procedure Execute;override;
// end;
public
{ Public declarations }
end;

var
mainForm: TmainForm;

implementation
{$R *.dfm}

const maxsize=128;
var nextnumber:integer=0;
doneflags:integer=0;
globalarray:array[1..maxsize]of integer;
cs:trtlcriticalsection;
function gettextnumber:integer;
begin
result:=nextnumber;
inc(nextnumber);
end;

procedure TFoothread.Execute;
var i:integer;
begin
onterminate:=mainform.Threadsdone;
entercriticalsection(cs);
for i:=1 to maxsize do
begin
globalarray[i]:=gettextnumber;
sleep(5);
end;
leavecriticalsection(cs);
end;

procedure tmainform.ThreadsDone(sender:tobject);
var i:integer;
begin
inc(doneflags);
if doneflags=2 then
begin
for i:=1 to maxsize do
listbox1.Items.Add(inttostr(globalarray[i]));
deletecriticalsection(cs);
end;
end;


procedure TmainForm.Button1Click(Sender: TObject);
begin
initializecriticalsection(cs);
tfoothread.Create(false);
tfoothread.Create(false);
end;

end.
Соседние файлы в папке primercritsect
  • #
    02.05.2014197 б20Project2.dpr
  • #
    02.05.2014876 б20Project2.res
  • #
    02.05.20144.99 Кб21Unit1.dcu
  • #
    02.05.201451 б20Unit1.ddp
  • #
    02.05.2014753 б20Unit1.dfm
  • #
    02.05.20141.41 Кб20Unit1.pas
  • #
    02.05.2014643 б20Unit1.~dfm
  • #
    02.05.20141.41 Кб20Unit1.~pas