![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про ПОТОКИ !!! [D6, Win2k]
belobadgo © (2002-04-30 15:23:00)Здравствуйте МАСТЕРА! Есть проблемма: пытаюсь создать поток, но
получаю ошибку : "...raised exception class EAccessViolation with message "Access violation at adress 0041B318 in ... Write of address "0000000E""
Вот так я описываю поток:
unit ScanThread;
interface
uses
Classes;
type
TScanThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
implementation
{ TScanThread }
procedure TScanThread.Execute;
begin
{ Здесь мой код }
end;
end.
Вот так я создаю экземпляр:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,scanthread, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
scan : TScanThread;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Scan.Create(false);
end;
end.
Ошибку при создании потока позже я обошел: объявление потока делаю не в publica внутри процедуры из которой создается поток. Но тогда возникает ошибка такого же рода при закрытии программы...
В чем я лопухнулся, чего я не вижу ? Помогите пожалуйста !!!
Suntechnic (2002-05-01 06:59:00) [1]>Vovchik © (01.05.02 02:01)
Не мы эту термниналогию вводили в обращение и не нам её отменять. А на вашем месте я бы поосторожнее кидался словами типа "малограмотные люди" и определять кто тут "знающие люди" и начинать с ними дискутировать. Вам совершенно правильно указали, что "нить" и "поток" в том контексте, что вы их употребляете в этой ветке, абсолютно одинаковые понятия.
Vovchik (2002-05-01 02:01:00) [2]> vuk © (01.05.02 01:27)
В каком-то смысле это правильно. Но с другой стороны во многих областях деятельности наличествует по разному сформированная терминология (например, в рентгенофотоэлектронной спектроскопии), что приводит к путанице. Поэтому лучше отбросить любую из двух терминологий и принять одну, чем наращивать этот комок.
Кроме того, нить может быть создана, но не выполняться. Тогда слово "поток" становится совсем не к месту.
vuk (2002-05-01 01:27:00) [3]to Vovchik:
>Кто-то малограмотный перевёл его "поток" и все за ним повторять
>стали. А терминологию эту всё же англоязычные люди пидумывали.
В русскоязычной литературе применяется понятие потоков как потоков управления(исполнения), что кстати на мой взгляд, для русского языка более естественно, чем "нить". Эта терминология сформировалась достаточно давно и, я так думаю, не имеет отношения к переводу слова thread. Потому как если бы имела, то терминология была бы сейчас несколько иной, ведь как Вы совершенно верно заметили, другого перевода у thread нет. А в данном случае налицо просто небольшой конфликт двух схожих (в русском языке) терминов, которые сформировались абсолютно самостоятельно. И пусть они лучше живут оба, чем в очередной раз начинать обезьяньичать и употреблять кальки с английских терминов.
Vovchik (2002-04-30 22:10:00) [4]>Создаем нить и получаем многопоточное приложение.
Не "многопоточное", а "многониточное".
> Не надо думать, что Вы истина в последней инстанции. Почитайте литературу.
Там не написано, кто истина. Кроме того, всё же слово "thread " иначе как "нить" перевести нельзя. Кто-то малограмотный перевёл его "поток" и все за ним повторять стали. А терминологию эту всё же англоязычные люди пидумывали.
panov (2002-04-30 19:37:00) [5]>Vovchik © (30.04.02 17:58)
Не надо думать, что Вы истина в последней инстанции. Почитайте литературу.
vuk (2002-04-30 18:39:00) [6]Создаем нить и получаем многопоточное приложение.
Так какой термин устоявшийся? :o)
Vovchik (2002-04-30 17:58:00) [7]>panov © (30.04.02 17:47)
Г-н модератор, дискутировать я предпочитаю со знающими людьми.
А если бы нить и поток были бы равнозначны, то в англоязычной терминологии не использовалось бы слово "thread", а использовалось бы "stream". Зачем другое слово, если уже и так есть термин?
panov (2002-04-30 17:47:00) [8]Vovchik © (30.04.02 16:07)
Нить и поток - абсолютно равнозначные термины.
Если желаете, дискуссию на эту тему можно перенести в "Потрепаться"
belobadgo (2002-04-30 16:13:00) [9]To Vovchik: Все. Усёк. Сам не додумался. Еще раз спасибо.
Vovchik (2002-04-30 16:07:00) [10]>belobadgo © (30.04.02 16:04)
Нить - это Thread. А поток - это может быть и Stream. И как их отличать тогда в русской терминологии?
belobadgo (2002-04-30 16:04:00) [11]To Vovchik: Спасибо ОГРОМНОЕ!!! Признаю - в ООП я полный "0". Кстати "попсовую" терминалогию беру из "Delphi 5 " - Дарахвелидзе, где сказано что НИТЬ и ПОТОК понятия одинаковые.
Vovchik (2002-04-30 15:50:00) [12]Совсем забыл:
Не ПОТОК, а НИТЬ!!! Не надо использовать попсовую терминологию.
Vovchik (2002-04-30 15:47:00) [13]Ты серъёзно спрашиваешь или шутишь?..
Как можно делать Scan.Create(false), когда у тебя ещё не создан объект??????????????????????????????????
Надо так:
scan:=TScanThread.Create(false);
scan.Resume;
и т.д.