Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: CL | DM;

Вниз

ProcessMessages   Найти похожие ветки 

 
BiN ©   (2006-11-02 17:15) [80]


> YuRock ©   (02.11.06 17:09) [79]
>
>
> Не только. TThread.FSynchronizeException еще очень большое
> значение имеет в этом контексте...

И какое же значение?


 
Сергей М. ©   (2006-11-02 17:19) [81]


> YuRock ©   (02.11.06 17:09) [79]


Не надо тут уже лепить про атомарность операций ввода/вывода рпо отношению к операндам размером в 1 байт.

Сто раз обсуждалось.

Облажаешься - не отмоешься.


 
YuRock ©   (2006-11-02 17:34) [82]


> И какое же значение?


Не меньшее, чем SizeOf(Boolean)


> Не надо тут уже лепить про атомарность операций ввода/вывода
> рпо отношению к операндам размером в 1 байт.


Вот метод TThread.Destroy, который вызывается в другом потоке:
destructor TThread.Destroy;
begin
 if (FThreadID <> 0) and not FFinished then
 begin
   Terminate;
...
end;


Думаешь, размер FThreadID 1 байт?


> Облажаешься - не отмоешься.


Это не всегда и не по всем заметно... почему-то...


 
Eraser ©   (2006-11-02 19:28) [83]

> [76] YuRock ©   (02.11.06 16:59)

где одновременное использование?

> [82] YuRock ©   (02.11.06 17:34)


> Думаешь, размер FThreadID 1 байт?

метод Destroy выполняется в основном потоке, FThreadID устанавливается тоже в основном потоке. Свойство ThreadID только для чтения, так что никаких конфликтов быть не должно.
Да и, мягко говоря, не удачный ты класс для примера выбрал.. TThread специально спроектирован для работы с доп. потоками, поэтому тут узких мест быть не должно.


 
Eraser ©   (2006-11-02 19:39) [84]

> метод Destroy выполняется в основном потоке

поправочка OnTerminate, т.е. откуда возможен доступ к полям объекта.


 
YuRock ©   (2006-11-02 19:44) [85]


> Eraser ©   (02.11.06 19:28) [83]


Ну так я его именно потому и выбрал :)
А свойство ThreadID, значит, нельзя использовать в коде потока?

Ладно с этим методом. Просто прозвучало утверждение: "Обращения ко всем переменные, использующиеся в разных потоках, обязательно надо синхронизировать, иначе буду AV, зависания и т.д.".

Ну хорошо. Синхронизируем. Перед использованием, скажем, некой переменной пишем:


 EnterCriticalSection( CS );
 //...


И получаем использование переменной CS (как минимум чтение) в разных потоках.

Так вот, меня интересует простой вопрос - зачем вводить в заблуждение читателей форума?


 
YuRock ©   (2006-11-02 19:45) [86]


> Eraser ©   (02.11.06 19:39) [84]
> > метод Destroy выполняется в основном потокепоправочка
> OnTerminate, т.е. откуда возможен доступ к полям объекта.
>


Метод Destroy может выполняться в любом потоке.


 
Eraser ©   (2006-11-02 19:50) [87]

> [85] YuRock ©   (02.11.06 19:44)

пока что в заблуждение всех вводишь ты.

> Обращения ко всем переменные, использующиеся в разных потоках,
> обязательно надо синхронизировать, иначе буду AV, зависания
> и т.д.

ты с этим не соглсен?

из всех правил есть исключения, но это не значит, что нужно игнорировать правила.


 
Eraser ©   (2006-11-02 19:51) [88]

> [86] YuRock ©   (02.11.06 19:45)

согласен, в [84] я себя поправил.


 
YuRock ©   (2006-11-02 19:58) [89]


> ты с этим не соглсен?из всех правил есть исключения, но
> это не значит, что нужно игнорировать правила.


Это не правила. Это логика программ. При чем тут исключения из правил.


> согласен, в [84] я себя поправил.


Я другое имел ввиду. Ты написал, что Destroy вызывается из основного потока, а на самом деле его можно вызывать из какого-угодно.


 
Eraser ©   (2006-11-02 20:07) [90]

> [89] YuRock ©   (02.11.06 19:58)


> Ты написал, что Destroy вызывается из основного потока

вот это я и поправил, имелось ввиду OnTerminate.

> Это логика программ

логика программ в том, что TThread спроектирован для работы в разных потоках, а TApplication - нет.



Страницы: 1 2 3 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.62 MB
Время: 0.061 c
15-1171390931
Vovan # 2
2007-02-13 21:22
2007.03.11
Расчёт таблиц истинности для логических функций


9-1143544075
STALIN
2006-03-28 15:07
2007.03.11
GLFreeform - GlScene как сделать так, чтобы через Freeform...


1-1168973594
anton773@yandex.ru
2007-01-16 21:53
2007.03.11
richtextbox и url


2-1171897635
FIL-23
2007-02-19 18:07
2007.03.11
отслеживание нажатия ентера


15-1171297066
vasIZmax
2007-02-12 19:17
2007.03.11
Что же ты делаешь-то...<censor> или "Божья рука"?