Форум: "Прочее";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];
ВнизСинхронизация доступа к хешу. Найти похожие ветки
← →
Дмитрий С © (2010-08-17 03:55) [0]Задача теоретическая.
Есть некий хеш (урезанный аналог TStringList): Реализованы только следующие функции:
* Задание значения целиком. (SL.Values[name]:=value)
* Удаление значения (по name). (SL.Delete(SL.IndexOfName(name)))
* Запрос значения (по name). (Value := SL.Values[name])
* Получение списка ключей (SL.Names[0..SL.Count-1]).
Никакие стандартные средства синхронизации недоступны, известно лишь, что задание значения одновременно двумя потоками не разрушает значение (записывается значение одного из этих потоков).
Есть особое значение хеша: Data=... Необходимо организовать синхронизацию доступа к этому значению (как при использовании критических секций). Т.е. у любого потока должна быть возможность монопольно считать данные, обработать, записать обратно.
Возможно ли это?
← →
Palladin © (2010-08-17 05:29) [1]
> задание значения одновременно двумя потоками не разрушает
> значение
Проблема параллельного доступа отнюдь не в записи, а в чтении значения. Основная задача параллельного программирования, заблокировать изменения на время чтения значения, которое имеет место в данное время в данном месте. Это как железная дорога. Поезд нельзя пустить по одноколейке с будущим разветвлением на двуколейку не зная на какой путь отправился впереди идущий.
← →
Palladin © (2010-08-17 05:30) [2]Блин, слабоватый пример получился )
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c