Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 21.06.2019
Сообщений: 7

Нужно понять, что такое shared_mutex

07.09.2019, 10:30. Показов 3335. Ответов 11
Метки stl (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем! Я уже где-то 9 месяцев учу C++, и мне пришла мысль попробовать начать удалённо работать. Так вот, резюме рассмотрели и прислали тестовое задание:

2. Написать собственную реализацию shared_mutex поддерживающий рекурсию. Не используя C14.
Использовать платформонезависимый код – средства stlи boost (но не использовать shared_mutex).

Скажите пожалуйста, что именно мне искать, чтобы разобраться в этом задании? Как я понимаю, дело в многопоточности (её пока не учил) или же в чём-то другом?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.09.2019, 10:30
Ответы с готовыми решениями:

Не могу понять, что такое void?
Господа, подскажите пожалуйста глупому, что значит void? Например: void function1(void); Что делает первый и второй void? Заранее...

Не могу понять что такое автоматы в программировании
Не могу понять что такое автоматы в программировании. Объясните пожалуйста с примерами, что это такое.

Студент. Хочу понять что такое ассемблер, как на нем писать, как его понять и с чего начать
Ребят, хочу понять ассемблер. Проблема в том, что я студент, пары микропроцессоров уже прошли, но я так и не понял как писать на нем. Хочу...

11
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.09.2019, 20:14
Цитата Сообщение от NaClnik Посмотреть сообщение
Написать собственную реализацию shared_mutex поддерживающий рекурсию. Не используя C14.
Ты не напишешь рекурсивный shared_mutex.
А нерекурсивный делается просто - там там достаточно мьютекса - std::mutex, и счётчика - std::atomic<size_t>.
Мьютекс блокирует на запись, а счётчик на чтение.
0
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
05.04.2021, 19:23
Цитата Сообщение от NaClnik Посмотреть сообщение
прислали тестовое задание:
2. Написать собственную реализацию shared_mutex
Ускоряем std::shared_mutex в 10 раз - не вчитывалась, рекурсивно или нет...
Цитата Сообщение от NaClnik Посмотреть сообщение
дело в многопоточности (её пока не учил)
действительно, с ходу не написать...

Добавлено через 3 минуты
? права ли я буду в предположении, что его хорошо использовать в Producer-Consumer отношениях между потоками, например ThreadSafe_Queue, - использовать condition_variable совместно с shared_mutex?.. - лучше, чем CV с просто mutex?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2021, 20:13
Цитата Сообщение от JeyCi Посмотреть сообщение
Ускоряем std::shared_mutex в 10 раз - не вчитывалась, рекурсивно или нет...
В этой статье довольно хреновая реализация shared_mutex'а, не советую её копировать. Ну и уж точно не стоит делать его рекурсивным.

Добавлено через 3 минуты
Цитата Сообщение от NaClnik Посмотреть сообщение
2. Написать собственную реализацию shared_mutex поддерживающий рекурсию. Не используя C14.
Рекурсивной там можно сделать только блокировку на запись. Блокировку на чтение сделать рекурсивной не получится.
1
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
05.04.2021, 20:36
в общем, он (shared_mutex) используется, когда 1 писатель и много читателей?

Добавлено через 36 секунд
т.к. писанина всегда должна быть синхронизирована... а читать могут все...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2021, 20:38
Цитата Сообщение от JeyCi Посмотреть сообщение
в общем, он (shared_mutex) используется, когда 1 писатель и много читателей?
Когда читателей много больше, чем писателей. Либо обращение на чтение идёт намного чаще, чем на запись.
1
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
05.04.2021, 20:46
shared_mutex has two levels of access:
• shared - several threads can share ownership of the same mutex.
• exclusive - only one thread can own the mutex.
на основе RW-Lock
An RW lock allows concurrent access for read-only operations, while write operations require exclusive access.
в U++ - RWMutex похоже... теперь буду знать, где применять
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2021, 20:52
Цитата Сообщение от JeyCi Посмотреть сообщение
в общем, на основе RW-Lock
В винде этот shared_mutex (SRW) занимает 8 байт (нифига не понимаю каким образом это работает), в отличие от std::mutex/critical section. Говорят, что и работает он лучше, чем обычный мьютекс. Я лично его стал использовать везде, где не нужна std::condition_variable.
0
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
05.04.2021, 21:07
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
(SRW) занимает 8 байт (нифига не понимаю каким образом это работает),
там, наверно, 4 байта на что-то (типа мьютекс) и 4 на счётчик... имхо...
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
std::mutex/critical section
тоже наверно, 8 байт
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.04.2021, 21:11
Цитата Сообщение от JeyCi Посмотреть сообщение
тоже наверно, 8 байт
Не гадай, проcто посмотри
C++
1
2
std::cout << sizeof(std::mutex) << std::endl;
std::cout << sizeof(CRITICAL_SECTION) << std::endl;
Добавлено через 1 минуту
Цитата Сообщение от JeyCi Посмотреть сообщение
там, наверно, 4 байта на что-то (типа мьютекс) и 4 на счётчик... имхо...
Там достаточно одного бита на write-lock, остальное - на счётчик. Но как это реализовать без спин-блокировок, я не знаю
0
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
06.04.2021, 09:48
Цитата Сообщение от NaClnik Посмотреть сообщение
понять, что такое shared_mutex
вот на примере о том, для чего он
optimize this code by using a shared_mutex
- see that now it takes 2 seconds instead of 4:
- The reason this version is faster is because threads t1, t2 and t3 can access the data at the same time. The only thread that will be waiting for 1 second is t4.
0
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
07.04.2021, 16:57
del
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2021, 16:57
Помогаю со студенческими работами здесь

Есть папка с файлами, происхождение аля что-то microsoft, не могу понять что это такое
Здравствуйте, я занимаюсь веб разработкой, и не шарю в том, что у меня сейчас на руках. Суть в том, что у меня есть папка с файлами,...

Помогите понять что это такое...
Вообщем есть задание с олимпиады по защите информации (ссылку не могу представить она уже закончилась). Там есть задание называется завод....

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

Кто ни будь, помогите понять, что такое .net?
Кто ни будь, помотите понять, что такое .net? :wall:

Помогите понять что это такое - /wbmp.cgi
Помогите понять что это такое - /wbmp.cgi?http://host.com/image.php Допустим так, это используется в вап сайтах, как я понимаю для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru