powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Через какое время будет заблокирован мьютекс?
15 сообщений из 40, страница 2 из 2
Через какое время будет заблокирован мьютекс?
    #40076441
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Ты столько раз написал слово фоновый поток.
Но фоновый поток ничего не блокирует. И не должен блокировать.
И с мьютексом не взаимодействует.
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076465
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav
пропущено...

Ох, ну и ну. Если мы находимся в таких условиях, то в большинстве случаев нагрузка на ЦПУ не
равномерна. У низкоприоритетного потока всегда есть шанс захватить мьютекс. Хоть мгновенно,
хоть не мгновенно. А после этого обрушить логику работы высокоприоритетных потоков.

Я читал где-то про такой алгоритм приоритезации. Кажется во FreeBSD. Вобщем поток имеющий
низкий приоритет (голодающий) в то врема когда 100% квантов потребляют более важные потоки,
всё таки имеет гарантированный шанс получить свой квант даже в таких условиях. Это что-то вроде
защиты от зависания потока.

Вот насчет FreeBSD я не уверен сильно.
У FreeBSD действительно была проблема что довольно легко организовать голодовку. Чаще всего это случалось с пользовательскими процессами при серьезном сетевом траффике.
В пятой версии (2003) представили новый планировщик (ULE) который должен был решить все эти проблемы, но он был по умолчанию выключен и работал стандартный планировщик. Только в 2008 (7 версия ОС) BSD планировщик был заменен на ULE "из коробки".
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076759
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Интересный вопрос мне тут задали.

Поток 1 захватил мьютекс, потом поток 2 пытается захватить этот мьютекс и поток 2 блокируется.
Потом поток 1 отпускает мьютекс. Вопрос: через какое время мьютекс будет захвачен потоком 2?
на простой вопрос - простой ответ - сразу же!
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076788
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
petrav
Интересный вопрос мне тут задали.

Поток 1 захватил мьютекс, потом поток 2 пытается захватить этот мьютекс и поток 2 блокируется.
Потом поток 1 отпускает мьютекс. Вопрос: через какое время мьютекс будет захвачен потоком 2?
на простой вопрос - простой ответ - сразу же!
)))
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076803
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
x1ca4064,

2. В чём смысл такого вопроса с точки зрения разработки многопоточных программ? Ведь поток 2 не может знать висел ли он на ожидании мьютекса или нет.


Бывает интересно, сколько времени поток проводит в ожидании занятого ресурса (мьютекса), насколько эффективна организация многопоточности. Для оценки простоя можно использовать минимум 2 способа. 1. мерять высокоточно время до и после получения ресурса. 2. Использовать не функцию захвата ресурса, а попытки захвата, которая вернется сразу же если он не доступен, и подсчитывать количество неудачных попыток. Другой вопрос, что можно сделать, получив эти данные, как и что оптимизировать.
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076835
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609,
>для ЭФФЕКТИВНОСТИ организации многопоточности в топике вообще нет никаких исходных данных.
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076853
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати даже проблема которую моделирует автор - будет иметь разные имплементации на windows-threads,
linux/p_threads e.t.c. Поэтому и изучать эту проблему в разрезе С++ безмысленно. Нам придется смотреть
что-то более конкретное к ОС и железу.

Может у него - QNX/Neutrino?
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076873
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается планировщик знает кто ожидает мьютекс и сразу же запускает ожидающий поток? Где можно про это почитать?
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076919
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17
Получается планировщик знает кто ожидает мьютекс и сразу же запускает ожидающий поток? Где можно про это почитать?
Нет, планировщик не знает. Он просто переключает процессы один за другим в соответствии с приоритетами этих процессов. Потому и может получиться что между освобождением и повторным захватом мьютекса может пройти неизвестно сколько реального времени занятого процессами которым данный мьютекс не интересен.
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076921
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но код ReleaseMutex способен поставить нового владельца в голову списка и отдать остаток
своего кванта, причём не возвращаясь в пользовательский режим.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076925
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Но код ReleaseMutex способен поставить нового владельца в голову списка и отдать остаток
своего кванта, причём не возвращаясь в пользовательский режим.

Это если оба потока на одном ядре. Если на разных ядрах, то задача становится неоднозначной - переключение потока на другое ядро далеко не бесплатная операция.
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40076950
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17
Получается планировщик знает кто ожидает мьютекс и сразу же запускает ожидающий поток? Где можно про это почитать?

Можно наверное начать читать отсюда https://en.wikipedia.org/wiki/Completely_Fair_Scheduler по Linux.

По Windows - не знаю. Но возможно Рихтер и Руссинович где-то писали об этом в своих книгах и статьях.
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40077041
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17
Получается планировщик знает кто ожидает мьютекс и сразу же запускает ожидающий поток? Где можно про это почитать?
Марк Руссинович Дэвид Соломон "Внутреннее устройство Windows"
Э. Таненбаум Х. Бос "Современные операционные системы"
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40077291
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Кстати даже проблема которую моделирует автор - будет иметь разные имплементации на windows-threads,
linux/p_threads e.t.c. Поэтому и изучать эту проблему в разрезе С++ безмысленно . Нам придется смотреть
что-то более конкретное к ОС и железу.

Может у него - QNX/Neutrino?

Нет, вопрос был задан именно так как я его озвучил. И именно не в контексте какой-то ОС.

PS: * Бессмысленно.
...
Рейтинг: 0 / 0
Через какое время будет заблокирован мьютекс?
    #40077292
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Но код ReleaseMutex способен поставить нового владельца в голову списка и отдать остаток
своего кванта, причём не возвращаясь в пользовательский режим.

Т.е. вы хотите сказать, что эти остатки этого кванта пользовательский поток будет работать в режиме ядра?
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Через какое время будет заблокирован мьютекс?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]