Ruby: существует ли блокировка ресурса в потоке при записи?

Планируется многопоточное приложение, в котором несколько потоков будут читать переменную,
при этом иногда эту переменную нужно перезаписывать.
Значит требуется что бы эта переменная не блокировалась при чтении из нескольких потоков, но при попытке записи блокировалась для всех кроме записывающего потока.

можно ли с помощью руби такое сделать?
я с потоками и с руби не "на ты", разобрался только с простейшим примером использования мьютексов.
где то прочитал про RWmutex, так понял что как раз они мне нужны.

-есть ли RWmutex в руби или можно ли как то сделать подобное другими средствами?
-если можно - ткните куда копать (или примерчик, простейший))) )
-может такое на Python есть? я его тоже не знаю так что питон тоже можно использовать..
  • Вопрос задан
  • 2613 просмотров
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
не понятно чем вам не угадили стандартные мютексы. Потоки ж будут блокироваться только при попытке захватить власть, когда им этого не положено. То есть только при записи. При чтении блокировать если нужно, что бы у потоков всегда были актуальные данные - тогда семафоры.

А так вот довольно интересное решение основанное на атомарных операциях.
Ответ написан
@vsuhachev
Надеюсь про GIL вы в курсе?
Ответ написан
@zedxxx
может такое на Python есть?

В питоне об этом уже давно просят и даже присылают патчи: bugs.python.org/issue8800

Гуглятся и самописные решения:
code.activestate.com/recipes/413393
code.activestate.com/recipes/502283
code.activestate.com/recipes/465156
code.activestate.com/recipes/577803-reader-writer-...
https://majid.info/blog/a-reader-writer-lock-for-p...

я его тоже не знаю так что питон тоже можно использовать

Обычно пишут на том, что лучше знают, а вы наоборот :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы