|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sergey Andrianov 2:5020/1507.400 16 Mar 2003 17:51:40 To : Slava Astashonok Subject : Re: списки, деревья и multithreading -------------------------------------------------------------------------------- Однажды 15-Mar-03 в 17:12 Slava Astashonok (via gate) написал All по поводу -=- списки, деревья и multithreading -=- SA> Может кто-нибудь поделиться опытом борьбы с динамическими списками и SA> деревьями в многопотоковых программах, в которых несколько нитей могут SA> одновременно добавлять/удалять данные? Kакие именно проблемы при этом SA> возникают я поясню на примере: предположим, наши данные представлены SA> двусвязным списком и некоторая нить удаляет элемент n, связанный с n-1 и SA> n+1. В первую очередь эта нить должна блокировать элемент n, а так как SA> она будет модифицировать указатели в элементах n-1 и n+1, то ей еще SA> нужно будет блокировать и эти элеметы. Предположим, что в этот момент SA> другой нити вздумалось удалять элемент n-1: она заблокировала его, n-2 SA> и остановилась при попытке блокировки n (он уже заблокирован). Первая SA> нить продолжает работу и останавливается при попытке блокировки n-1. SA> Получили deadlock. SA> Сейчас я использую способ, заключающийся в хранении данных в нескольких SA> независимых списках, и блокирую любой из них по мере необходимости, SA> однако я этим неудовлетворен. Тем более, что в дальнейшем списки я хочу SA> заменить сбалансированным деревом. Hаклевывается еще один способ, но я с SA> ним пока подожду. А почему ты считаешь, что блокирование n-1, n и n+1 элемента - это три отдельные операции? Осуществлять все манипуляции над данными должно единственное ядро, а разные потоки только обращаются с запросами на изменение к этому ядру, но непосредственно к самим данным доступа не имеют. До свидания, в 16:48 MSK Sergey --- * Origin: Sergiev Posad (2:5020/1507.400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/52053E74AB9C.html, оценка из 5, голосов 10
|