Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-96174
саф
2003-09-16 10:02
2003.09.29
Склеить несколько файлов разных расширений в один


9-96050
TWINk1
2003-03-23 02:14
2003.09.29
xXx


3-96146
sash2
2003-09-10 14:45
2003.09.29
Копирование единичных данных?


1-96274
IGORYOK
2003-09-16 10:30
2003.09.29
У меня не работает FindControl на форме и FindComponent на панели


1-96298
BanderLog
2003-09-16 13:16
2003.09.29
FastReport для D7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский