2015-05-25 9 views
1

Если у меня есть TidTCPServer экземпляра и я объявляю TFormatSettings и заполнить его в Create рутины, это безопасно ссылаться на этом переменном (например, называют Format ('%1.6f', [SomeReal], AFormatSettings]) в Execute методы потока, когда может быть более чем один контекст выполняющегося?Delphi 2007, Indy - Является ли переменная, объявленная в потоке TidTCPServer безопасной в контексте?

Если нет, то как я могу сделать поточно-ссылку?

ответ

3

это потокобезопасно до тех пор, как вы изменяете AFormatSettings только тогда, когда ни один из потоков не доступ к нему (например, его инициализации перед включением сервера), и потоки только считывают из него. Format() не изменяет TFormatSettings, который передается ему.

+0

Perfect. Спасибо Реми. – rossmcm

1

Если вы когда-либо сомневались в безопасности потоков, вы могли бы создать следующую функцию и использовать ее вместо формата.

ThdSafeFormat(const aFormat: string; const aArgs: array of const): string; 
var 
    FormatSettings: TFormatSettings; 
begin 
    GetLocaleFormatSettings(LOCALE_USER_DEFAULT, FormatSettings); 
    Result := Format(aFormat, aArgs, FormatSettings); 
end; 

 Смежные вопросы

  • Нет связанных вопросов^_^