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
Или коротким