Текущий архив: 2003.09.29;
Скачать: CL | DM;
Вниз
thrddemo. Загадка. Найти похожие ветки
← →
Verg (2003-09-16 12:08) [0]Delphi6. Установлены все известные UpdatePack-и и RtlUpdate.
NT4 WorkStation SP6a.
Находясь в Delphi беру этот самый thrddemo (..Borland\Delphi6\Demos\Threads\).
Делаю Build All и запуск (F9).
Появляется мордочка с тремя бщксами.
← →
Verg (2003-09-16 12:10) [1]Пардон, промазал.
Так вот, жму кнопучку Start Sorting. Нормально. Сортирует.
Жму еще раз. Опять нормально. И так шесть раз. На шестом эта прога молча сваливает, прихватив с собой Delphi.
Это только у меня так?
← →
mrcat (2003-09-16 12:23) [2]:) Неужели Борланд глюк допустил в thrddemo ? сильно сомневаюсь ...
← →
Verg (2003-09-16 12:30) [3]
> Неужели Борланд глюк допустил в thrddemo ? сильно сомневаюсь
> ...
Я не говорил про глюки в thrddemo.
Я хотел, чтобы у кого есть возможность проверить в этих же условиях - проверил.
← →
mrcat (2003-09-16 12:37) [4]сейчас проверил на NT4 + SP6.
Дэлфи на ней нет, но программу запустил --- без ошибок.
← →
Verg (2003-09-16 12:40) [5]
> Дэлфи на ней нет, но программу запустил --- без ошибок
Без Delphi прога пашет - это я знаю. Именно эффект проявляется из под Делфи.
← →
Bel (2003-09-16 13:13) [6]Во, блин. У меня то же самое. Win98, Delphi6 + UpdatePack2. На шестом проходе выдала "Программа DELPHI32 вызвала сбой при обращении к странице памяти в модуле KERNEL32.DLL по адресу 0187:bff87ee0". Чё за фигня такая?
← →
Verg (2003-09-16 13:33) [7]На Win2K - проверил, нормально все.
Че за фигня не знаю.
Похоже что-то с отладчиком у дельфы.
← →
MBo (2003-09-16 13:51) [8]Встречал в инете упоминания о том, что при запуске многопоточных приложений из-под среды бывают проблемы. Подробностей не помню, кажется, что-то с числом потоков связано. У меня D5, проблем с этой демкой нет, при отслеживании числа потоков - они завершаются корректно, уничтожаются вовремя.
← →
Verg (2003-09-16 14:03) [9]Еще одно удивление:
procedure TForm1.Button1Click(Sender: TObject);
begin
TThread.Create(false);
end;
Что должно произойти при выполнении этого кода?
← →
panov (2003-09-16 14:07) [10]>Verg ©
Создастся поток, который останется в незавершенном состоянии.
← →
Polevi (2003-09-16 14:16) [11]>panov © (16.09.03 14:07) [10]
TThread абстрактный класс
← →
MBo (2003-09-16 14:30) [12]>Verg © (16.09.03 14:03) [9]
Неужели в демке в Д6 такая логика?
В Д5
procedure TThreadSortForm.StartBtnClick(Sender: TObject);
...
with TBubbleSort.Create(BubbleSortBox, BubbleSortArray) do
OnTerminate := ThreadDone;
...
constructor TSortThread.Create(Box: TPaintBox; var SortArray: array of Integer);
begin
...
FreeOnTerminate := True;
inherited Create(False);
end;
← →
Bel (2003-09-16 14:49) [13]> MBo © (16.09.03 14:30) [12]
В D6 то же самое.
← →
Verg (2003-09-16 15:01) [14]Ладно, оставим в покое абстрактный класс TThread, который будет рожден и тихо мирно умрет:
if not Thread.Terminated then
try
Thread.Execute; // Вызов абстрактного метода приведет к исключению, которе для интересующихся будет лежать в FatalException
except
Thread.FFatalException := AcquireExceptionObject;
end;
Вот код, который под Delphi6 под NT4 вызывает аварийное завершение как самой программы, так и Delphi6-Pro:
procedure TForm1.Button1Click(Sender: TObject);
begin
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
end;
Как видим все дело просто в количестве потоков...
← →
Verg (2003-09-16 15:01) [15]Ладно, оставим в покое абстрактный класс TThread, который будет рожден и тихо мирно умрет:
if not Thread.Terminated then
try
Thread.Execute; // Вызов абстрактного метода приведет к исключению, которе для интересующихся будет лежать в FatalException
except
Thread.FFatalException := AcquireExceptionObject;
end;
Вот код, который под Delphi6 под NT4 вызывает аварийное завершение как самой программы, так и Delphi6-Pro:
procedure TForm1.Button1Click(Sender: TObject);
begin
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
TThread.Create(false);
end;
Как видим все дело просто в количестве потоков...
← →
MBo (2003-09-17 07:56) [16]http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=17644
Сейчас там вариант для d7, а когда было D6, в файле было написано:
Note :
This application use BPL runtime packages. The application
don"t work fine if you don"t use runtime BPLs. This is a
bug in Synchronize method of TThread, when running under Delphi IDE
IDE cannot run more than 16 threads at the same time
Страницы: 1 вся ветка
Текущий архив: 2003.09.29;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.008 c