на главнуюВсе эхи RU.CPP
войти ?

Re: pthreads rd/wr lock'и

От Serguei E. Leontiev (2:5020/400) к Dmitry E. Oboukhov

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


From: "Serguei E. Leontiev" <leo@sai.msu.ru>

Здравствуйте, Dmitry,
Вы писали к Nickita A Startcev от Fri, 03 Jul 2009 21:07:09 +0400:

DEO>>> pthread_rwlock_rdlock(&lock);
DEO>>> ... код
DEO>>> pthread_rwlock_unlock(&lock); // [2.1]
DEO>>> pthread_rwlock_wrlock(&lock); // [2.2]
DEO>>> ... код, модифицирующий ресурс
DEO>>> pthread_rwlock_unlock(&lock);

DEO>>> в принципе логических гонок нет, но мне не нравится то что какое-то
DEO>>> время лок отсутствует вообще. то есть гонки появиться могут в
какой-то
DEO>>> перспективе между [2.1] и [2.2]

Если нет гонок, т.е. если "volatile" информация, полученная в области "...
код", не используется в области "... код, модифицирующий ресурс". То и
проблемы нет, для порядка можно разнести на два блока (две функции), что бы
уж с гарантией. Типа, например, функция lookup() - только читатель, а
insert() - писатель.

DEO> я бы патч на pthreads написал, но блин это всеж таки посикс. кто знает
DEO> как туда можно вылезти с предложениями/дополнениями?

По POSIX - <http://www.opengroup.org/austin/defectform.html>, т.к. LSB
оказывает большое влияние, то www.lsb.org тоже есть bugzilla.

Hо дело долгое, и есть мнение, что за дюжину лет (с 1997 года) уже вылезали
с таким предложением, и отвергли. Я думаю, что по причине "это плохой
стиль", который мешает таким методам планирования, как "инверсия приоритета"
и т.п. Есть подозрение, что только редкие, но качественные ОС, типа
AIX/Solaris/VxWorks получили преимущества от такого решения. Так, что
"GNU/Linux-какеры" могут и поддержать в очередной версии LSB, а потом,
глядишь, и до POSIX докатится.

Hу, а раз мы в группе RU.CPP, то могу посоветовать опробовать BOOST в части
библиотеки Thread, которая является тонкой (только заголовочные файлы)
прослойкой над pthread_*(), в ней имеется реализация shared_lock с
возможностью "усиления/ослабления". Если у тебя умеренные требования и все
эти "инверсии приоритета" от тебя далеки, то чем не решение.

Опять же авторитетная, для C++ конечно, группа разработчиков (Александреску
и сотоварищи), переносимое, все дела :)

--
Успехов, Сергей Леонтьев. E-mail: lse@cryptopro.ru <http://www.cryptopro.ru>


--- ifmail v.2.15dev5.4
* Origin: ГАИШ, МГУ (2:5020/400)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.CPP?msgid=<1187354727@cp.ru>+e5c73db1