Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1217335816
Mops
2008-07-29 16:50
2008.09.07
1251 в UTF


3-1205271880
GanibalLector
2008-03-12 00:44
2008.09.07
backup/restore Firebird


2-1217151979
ванъка
2008-07-27 13:46
2008.09.07
TImageList


15-1215752865
Vlad Oshin
2008-07-11 09:07
2008.09.07
Задачка с подвохом, ибо пятница. Гарднера


2-1216995994
h5who
2008-07-25 18:26
2008.09.07
Структуры и указатели





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский