IPB
ЛогинПароль:

> Класс Thread
Altair
сообщение 4.02.2005 22:25
Сообщение #1


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Компилирую программу:

program testthreads;

{$mode objfpc}

uses
sysutils,
classes;

type
TMyThread=class(TThread)
private
ch : char;
protected
procedure Execute; override;
public
constructor Create(c:char);
end;

procedure TMyThread.Execute;
begin
repeat
write(ch);
until Terminated;
end;


constructor TMyThread.Create(c:char);
begin
ch:=c;
inherited Create(false);
end;

var
t1,t2 : TMyThread;
begin
t1:=TMyThread.Create('a');
t2:=TMyThread.Create('b');
readln;
t2.Terminate;
readln;
t1.Terminate;
readln;
t2.Destroy;
t1.Destroy;
end.


При запуске секунды 3-4 работает как надо, потом ошибка
Error, DISC FULL
И вылетает.
Компилятор FPC.

То-же самое делаю на Delphi, все идеально!

+ в FPC когда прога еще работает, если нажать на клавишу, то прога вылетит. sad.gif

почему?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 5.02.2005 16:45
Сообщение #2


Гость






Oleg_Z
Попробуй использовать TThread.Synchronize:
type
TMyThread=class(TThread)
private
ch : char;
protected
procedure Execute; override;
procedure ShowIt;
public
constructor Create(c:char);
end;

procedure TMyThread.ShowIt;
begin
write(ch)
end;

procedure TMyThread.Execute;
begin
repeat
synchronize(ShowIt)
until Terminated;
end;


constructor TMyThread.Create(c:char);
begin
ch:=c;
inherited Create(false);
end;

var
t1,t2 : TMyThread;
begin
t1:=TMyThread.Create('a');
t2:=TMyThread.Create('b');
readln;
t2.Terminate;
readln;
t1.Terminate;
readln;
t2.Destroy;
t1.Destroy;
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.06.2025 8:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"