Форум: "Начинающим";
Текущий архив: 2008.09.07;
Скачать: [xml.tar.bz2];
ВнизЧто-то типа хеша Найти похожие ветки
← →
Ruzzz © (2008-07-25 03:42) [0]Как организовать доступ к разным переменным через одну функцию? Переменные разных типов. Нужно чтобы через эту функцию, внутри которой EnterCriticalSection...LeaveCriticalSection, доступ (read/write) к разным переменным был из разных потоков. В голову приходит только использование хеша для набора этих переменных, но может есть более быстрые способы?
← →
Leonid Troyanovsky © (2008-07-25 10:51) [1]
> Ruzzz © (25.07.08 03:42)
> Как организовать доступ к разным переменным через одну функцию?
> Переменные разных типов
Это, как раз, и есть все через одну (критическую секцию):
EnterCriticalSection(cs);
// читаем - пишем общую переменную нужного типа
LeaveCriticalSection(cs);
--
Regards, LVT.
← →
Сергей М. © (2008-07-25 10:57) [2]Непонятно, какое отношение использование КС имеет к хэшированию чего-то там ...
← →
Anatoly Podgoretsky © (2008-07-25 14:54) [3]Голову сломал с этим хешем и автором.
← →
Ruzzz © (2008-07-25 16:28) [4]Ну вот есть например у меня набор переменных, доступ к которым нужно выполнять в CriticalSection, как мне этой одной единственной функцией изменять/читать эти переменные? какие параметры ей предать, чтобы однозначно определить какая переменная? :( ну наверное я не могу выразить свою мысль. Хеш упомянул - использовать для хранения в нем этих самых переменных, ключ хеша - это имя переменной, другой способ в голову не приходит, либо для доступа к каждой отдельной переменной писать свою функцию?
← →
Palladin © (2008-07-25 16:33) [5]
Function ВзятьПеременнуюСИменем(ИмяПеременной):Variant;
Begin
EnterCriticalSection;
Try
If ИмяПеременной="Переменная1" Then Result:=Переменная1 Else
If ИмяПеременной="Переменная2" Then Result:=Переменная2 Else
и так до потери пульса
Finally
LeaveCriticalSection
End;
End;
← →
Leonid Troyanovsky © (2008-07-25 16:34) [6]
> Ruzzz © (25.07.08 16:28) [4]
> нужно выполнять в CriticalSection, как мне этой одной единственной
> функцией изменять/читать эти переменные? какие параметры
> ей предать, чтобы однозначно определить какая переменная?
А чего жлобиться? Напиши столько функций, сколько надо.
Главное, чтобы чтение и запись ходили через одну и ту же КС.
В соседней ветке раздавали целый пример.
--
Regards, LVT.
← →
Правильный$Вася (2008-07-25 16:43) [7]
> Ruzzz © (25.07.08 16:28) [4]
имя переменной - это только для удобства кодирования
а в программе - это всего лишь адрес, никакого имени нет, какой хэш?
вот если ты будешь передавать адрес, то, при условии корректной обработки типа, можно будет чего-то присваивать
← →
Ruzzz © (2008-07-25 16:57) [8]Всем спасибо!
Решение с Variant - не плохое, но не охота связываться :)
> вот если ты будешь передавать адрес, то, при условии корректной
> обработки типа, можно будет чего-то присваивать
думал о таком, но по сути это то что должен делать за меня компилятор :)
> А чего жлобиться? Напиши столько функций, сколько надо.
Решил делать именно так
← →
Palladin © (2008-07-26 00:32) [9]осталось необходимые переменные оформить как published свойства и можно обойтись без умопомрачительной толпы if
← →
Сергей М. © (2008-07-26 00:36) [10]
> сломал с этим хешем и автором.
Осмелюсь ляпнуть - автор зас..л великую тему синхронизации ошметками организации)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.09.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c