Reader / Writer Lock с таймаутом с использованием условной переменной - PullRequest
1 голос
/ 27 января 2009

Как написать блокировку Reader / Writer с тайм-аутом, используя условные переменные в C / C ++?

Ответы [ 4 ]

4 голосов
/ 27 января 2009

Если вы просто ищете библиотеку, Boost.Thread может делать то, что вы хотите.

1 голос
/ 27 января 2009

Вы можете взглянуть на источник реализации Java ReentrantReadWriteLock .

Просто возьмите JDK , распакуйте файл src.zip и найдите источник.

0 голосов
/ 27 января 2009

Взгляните на библиотеку Boost.Thread . В частности: shared_mutex и upgradeable_mutex объекты.

0 голосов
/ 27 января 2009

В текущем стандарте C ++ нет поддержки таких вещей, хотя C ++ 0x будет иметь некоторую поддержку многопоточности (я не проверял, сколько). Поэтому любой ответ должен зависеть от платформы, используя платформу в очень общем смысле.

Можно написать библиотеки, которые будут вести себя одинаково в разных базовых системах, и существует довольно много кроссплатформенных библиотек. (Конечно, они могут быть неэффективными, если возможности базовых платформ различны.) Может существовать общепринятая библиотека потоков C ++, которая будет работать в системах на базе Windows и Unix (это практически все, что вы будете использовать на рабочем столе в настоящее время), но я не знаю ни одного случайного.

Следовательно, на этот вопрос нельзя ответить как задано. Было бы необходимо ответить на него на конкретной платформе или библиотеке, и ни один не указан. Это имело бы смысл, если бы он сочетался с запросом о рекомендации библиотеки.

...