Russian Qt Forum
Ноябрь 23, 2024, 11:53
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Многопоточное программирование, процессы
>
Ограничить ReadWriteLock
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Ограничить ReadWriteLock (Прочитано 11002 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Ограничить ReadWriteLock
«
Ответ #15 :
Май 06, 2012, 17:06 »
Цитата: alexis031182 от Май 06, 2012, 16:48
..
Желательно наверное всё-таки использование.
...
Иначе от счётчика мало толку, получается
Так от счетчика "текущего использования" толку еще меньше. Напр работают 4 нитки, имеем значения от 0 до 3 - и что с того?
Цитата: alexis031182 от Май 06, 2012, 16:48
Почему нельзя хотя бы для начала просто привязаться к какой-нибудь константе? Например
Код:
if(element->mNumAccess > 99) element->setResidentFlag(true);
А так все элементы быстро станут резидентами, ведь счетчики непрерывно растут. Кстати в int они не влазят, поэтому константа 99 вызывает "сардоническую улыбку"
Записан
alexis031182
Гость
Re: Ограничить ReadWriteLock
«
Ответ #16 :
Май 06, 2012, 17:33 »
Цитата: Igors от Май 06, 2012, 17:06
Так от счетчика "текущего использования" толку еще меньше. Напр работают 4 нитки, имеем значения от 0 до 3 - и что с того?
Если это так, как я понимаю, то в случае с 4-мя работающими нитками значение счётчика будет равно 4. То есть рейтинг "популярности" элемента среди ниток на текущий момент времени весьма низок, а это значит, имеем возможность лепить ещё больше ниток к данному элементу. Если же, спустя время, рейтинг востребованности начинает зашкаливать, то имеет смысл перенаправить поток на работу с другим элементом изображения (я так понимаю, элементы в каком-нибудь списке находятся, ну вот тут и взять, например, следующий, а к текущему, занятому, вернуться позже).
Цитата: alexis031182 от Май 06, 2012, 16:48
А так все элементы быстро станут резидентами, ведь счетчики непрерывно растут. Кстати в int они не влазят, поэтому константа 99 вызывает "сардоническую улыбку"
Если счётчик будет отталкиваться не от кол-ва обращений, а от кол-ва ниток, использующих элемент, то элементы в процессе работы программы будут автоматом сами переходить из состояния резидентного в нерезидентное и наоборот.
Нет? Я может быть неадекватно понимаю ситуацию?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Ограничить ReadWriteLock
«
Ответ #17 :
Май 06, 2012, 17:58 »
Кол-во ниток использующих (сейчас) данный элемент можно получить из самого локера, технически это не проблема. Но это просто "фотография" т.е. расклад в данный момент времени - и все. Ну напр обнаружили что вот сейчас элемент затребован всеми 4 нитками - и что, уже маркировать его резидентом? А если 3-мя или 2-мя? Выглядит как-то несолидно/неустойчиво
Записан
alexis031182
Гость
Re: Ограничить ReadWriteLock
«
Ответ #18 :
Май 06, 2012, 18:08 »
Цитата: Igors от Май 06, 2012, 17:58
Кол-во ниток использующих (сейчас) данный элемент можно получить из самого локера, технически это не проблема. Но это просто "фотография" т.е. расклад в данный момент времени - и все. Ну напр обнаружили что вот сейчас элемент затребован всеми 4 нитками - и что, уже маркировать его резидентом? А если 3-мя или 2-мя? Выглядит как-то несолидно/неустойчиво
Цифра четыре условно взята за пик, прохождение которого в соответствующую сторону (вверх/вниз) знаменует смену флага резидентности. Да, тут получается к чему-то нужно привязаться, может быть даже высчитывать процент текущих ниток, работающих с элементом, от всех имеющихся ниток. Впрочем, это ничем не лучше константы. Тогда надо думать, раз такое не подходит.
Записан
V1KT0P
Гость
Re: Ограничить ReadWriteLock
«
Ответ #19 :
Май 06, 2012, 18:13 »
Может отталкиваться от алгоритма который обрабатывает изображение, или это секретные разработки? =)
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Ограничить ReadWriteLock
«
Ответ #20 :
Май 06, 2012, 18:47 »
Цитата: V1KT0P от Май 06, 2012, 18:13
Может отталкиваться от алгоритма который обрабатывает изображение, или это секретные разработки? =)
Обработка довольно однообразна
- на основании др данных вычисляются координаты пикселя и некоторый радиус (также в пикселях)
- в получившемся круге выбирается заданное кол-во пикселей (default 25) и вычисляется их среднее значение в виде float rgb(a)
Эта утилитарная операция повторяется много раз и может быть вызвана любой ниткой во многих вариантах.
Записан
V1KT0P
Гость
Re: Ограничить ReadWriteLock
«
Ответ #21 :
Май 06, 2012, 18:53 »
Цитата: Igors от Май 06, 2012, 18:47
Обработка довольно однообразна
- на основании др данных вычисляются координаты пикселя и некоторый радиус (также в пикселях)
- в получившемся круге выбирается заданное кол-во пикселей (default 25) и вычисляется их среднее значение в виде float rgb(a)
Эта утилитарная операция повторяется много раз и может быть вызвана любой ниткой во многих вариантах.
Ну вот уже лучше. Другие данные имеют обратную связь с вычислением среднего значения? Может можно координаты пикселей отсортировать, тогда пока обрабатывается предыдущие данные, будет известно какие загрузить следующие. В таком случае задержка будет минимальна.
Тут проще всего менеджер сделать, ему например передать задачи вычислить в таких-то координатах. Он уже смотрит какие куски необходимы и отсортировывает задачи так, чтоб два раза один и тот-же кусок не надо было грузить. Также он сможет контролировать расход памяти и количество ниток которые могут в текущий момент получать данные.
Я к тому, что сперва надо на алгоритмическом уровне оптимизировать.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Ограничить ReadWriteLock
«
Ответ #22 :
Май 07, 2012, 08:37 »
Цитата: V1KT0P от Май 06, 2012, 18:53
Я к тому, что сперва надо на алгоритмическом уровне оптимизировать.
Это не тот случай. Простой пример: имедж отмаплен сферой. Тогда расчет какие части имеджа (элементы) потребуются вероятно обойдется дороже самого осреднения.
Ну и почему мы сразу сочли что общее/регулярное решение невозможно или слишком сложно, поэтому надо искать частное решение используя специфику задачи? Как насчет подумать (вместо воспоминаний как использовать готовое)? Ну напр
- после 1 миллиона обращений проходимся по всем элементам и (пере)назначаем резидентов (возможно обнуляя счетчики)
Коряво конечно, элементов может быть много (десятки тысяч), но ведь и операция редкая. Значит не так уж безнадежно, ходы-то есть.
Записан
V1KT0P
Гость
Re: Ограничить ReadWriteLock
«
Ответ #23 :
Май 07, 2012, 13:00 »
Цитата: Igors от Май 07, 2012, 08:37
Ну и почему мы сразу сочли что общее/регулярное решение невозможно или слишком сложно, поэтому надо искать частное решение используя специфику задачи?
Частное решение может иногда выигрывать по каким-то параметрам. Например нужно очень часто вычислять среднее значение на картинке, а изменение ее проводится очень редко. То можно на первом этапе просчитать все значения, и когда картинка будет меняться просто корректировать некоторые значения.
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...