-
Что означает конструкция в TThread [HPPGEN('volatile bool FTerminated')]?
TThread = class
private type
PSynchronizeRecord = ^TSynchronizeRecord;
TSynchronizeRecord = record
FThread: TObject;
FMethod: TThreadMethod;
FProcedure: TThreadProcedure;
FSynchronizeException: TObject;
end;
private class var
FProcessorCount: Integer;
private
FThreadID: TThreadID;
{$IF Defined(MSWINDOWS)}
FHandle: THandle platform;
{$ELSEIF Defined(POSIX)}
FCreateSuspendedMutex: pthread_mutex_t;
FInitialSuspendDone: Boolean;
{$ENDIF POSIX}
FStarted: Boolean;
FCreateSuspended: Boolean;
[HPPGEN('volatile bool FTerminated')]
FTerminated: Boolean;
FSuspended: Boolean;
-
А где ты нарыл такое?
-
Имхо такое не скомпилируется ни в одной знакомой мне версии Дельфи.
-
В System.Classes.
Berlin 10 update 2.
-
Ну если так, то я пас.
-
-
Аналог явовской аннотации
-
-
Открой для себя атрибуты в старших версиях дельфи :)
-
Еще бы узнать нафиг они нужны. И почему на флаге FTerminated.
-
Кто б сомневался © (11.03.17 11:11) [9]
> Еще бы узнать нафиг они нужны
Затем же, зачем и в C# - наделять дополнительными свойствами поля, методы, классы...
> И почему на флаге FTerminated.
Для языка С++ добавить модификатор volatile конкретно этому полю.
-
Между прочим у Tobject нашел такое поле:
protected
[Volatile] FRefCount: Integer;
Что это значит?
-
Значит, что значение может измениться "само собой" - поэтому компилятор не может оптимизировать работу с этим полем. Если два раза подряд идут одинаковые сравнения, например - то их нельзя соптимизировать в одно; если ты присвоил значение - это не значит, что при чтении ты получишь его обратно - и т.п.