Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
ВнизВызов процедуры из потока Найти похожие ветки
← →
3APA3A (2004-07-03 19:03) [0]У меня вот такая процедура
procedure Wait(Interval : Cardinal);
var hEvent : Cardinal;
begin
hEvent := CreateEvent(nil, True, True, nil);
WaitForSingleObject(hEvent, Interval);
CloseHandle(hEvent);
end;
Является ли она потокобезопасной? Я думаю, что да, но интересно послушать другие мнения...
P.S. вопрос даже не конкретно про мою процедуру, а вообще -
когда поток вызывает функцию, создаются ли ее локальные переменные в стеке для каждого потока или нет?
P.S.S. в довесок - чем threadvar отличается от var?
← →
DrPass © (2004-07-03 19:19) [1]Является.
P.S. Создаются
P.P.S. Глобальная переменная, объявленная как var, доступна для всех потоков
Переменная threadvar как бы создается в нескольких экземплярах - для каждого потока, т.е. является потокобезопасной. На самом деле threadvar представляет собой прозрачную для программиста оболочку над виндовым механизмом thread local storage, и потому доступ к таким "переменным" осуществляется намного медленнее, чем к обычным
← →
3APA3A (2004-07-03 19:32) [2]Отсюда вытекает
что как только поток завершился нет никакой возможности узнать "его" значение threadvar-переменной
или
я ошибаюсь... можете поподробней рассказать про механизм thread local storage или заURLить меня куда-нибудь?
← →
Polevi © (2004-07-03 22:29) [3]http://www.delphimaster.ru/articles/localmem/index.html
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.039 c