Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Пишу в VS 2010 на C++, MFC'шное dialog-based-приложение. Задача такая: по нажатию на кнопку создать 2 дополнительных потока (AfxBeginThread), и чтобы каждый поток, точнее функция потока, выполнялись по таймеру (SetTimer). Потоки то создаются, их функции работают, а как их заставить выполняться по таймерам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 13:26 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
satch, - создай Event ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms682396(v=vs.85).aspx) - блокируйся в потоках на созданном событии ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx) - при срабатывании таймера устанавливай состояние таймера - это приведет с разблокировке потоков ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms686211(v=vs.85).aspx) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 13:40 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
satchЗадача такая: по нажатию на кнопку создать 2 дополнительных потока (AfxBeginThread), и чтобы каждый поток, точнее функция потока, выполнялись по таймеру (SetTimer). Какая-то внутренне противоречивая задача... Поток обычно создаётся чтобы работать. Надо по таймеру - порождай поток в процедуре таймера (или по приходу WM_TIMER). Заранее порождать потоки ни к чему. Или, если потоки созданы сразу, то ни к чему уже таймер: они сами могут уснуть на нужное время, а потом проснуться без всякого внешнего воздействия. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 14:10 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovsatchЗадача такая: по нажатию на кнопку создать 2 дополнительных потока (AfxBeginThread), и чтобы каждый поток, точнее функция потока, выполнялись по таймеру (SetTimer). Какая-то внутренне противоречивая задача... Поток обычно создаётся чтобы работать. Надо по таймеру - порождай поток в процедуре таймера (или по приходу WM_TIMER). Заранее порождать потоки ни к чему. Или, если потоки созданы сразу, то ни к чему уже таймер: они сами могут уснуть на нужное время, а потом проснуться без всякого внешнего воздействия. Но если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании таймера (например, раз в секунду) будет создаваться новый поток, правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 15:07 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
satchНо если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании таймера (например, раз в секунду) будет создаваться новый поток, правильно? Правильно. Он создастся, сделает что надо и умрёт. Так живут потоки. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 15:26 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovsatchНо если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании таймера (например, раз в секунду) будет создаваться новый поток, правильно? Правильно. Он создастся, сделает что надо и умрёт. Так живут потоки. Не вы меня не поняли. Вот пример: UINT ThreadWatcherEAF(LPVOID pParam) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. То есть в данном примере раз в секунду будет создаваться новый поток, да? Например, запущу свое приложение на 10 секунд, и за это время наплодится 10 потоков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 15:40 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
satchза это время наплодится 10 потоков? Да. В чём проблема-то? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 15:50 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ну, например, в пуле потоков потоки живут иначе. Порой накладные расходы на создание потока столь высоки, по сравнению с заданиями которые они получают, что переходят на использование пулов потоков. Или же пулы потоков просто необходимы, когда требуется жесткий контроль над ресурсами. Вообщем, однозначного рецепта нет - "используй потоки так, и никак иначе", все зависит от задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 16:22 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковПорой накладные расходы на создание потока столь высоки, по сравнению с заданиями которые они получают, что переходят на использование пулов потоков. Если задание такое мелкое, то его проще выполнить прямо в коде OnTimer. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 16:34 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsatchза это время наплодится 10 потоков? Да. В чём проблема-то? Ну мне, как мне кажется, при создании потока выделяется память, а в данном случае я её бессмысленно расходую, ведь мне нужны не 10 потоков, а один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 16:40 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
satchНу мне, как мне кажется, при создании потока выделяется память, а в данном случае я её бессмысленно расходую, ведь мне нужны не 10 потоков, а один.Если один поток завершился до создания другого, то в чём проблема? А если не завершился, то, может быть, вам, всё-таки, нужны десять потоков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 16:45 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
satchмне нужны не 10 потоков, а один. Потоки - средство, а не цель. Их нужно столько, сколько требует задача. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 17:18 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Их нужно столько, сколько их использование будет оправдано текущими аппаратными и программными ресурсами. Бездумное и неконтролируемое создание потоков путь в никуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 17:29 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковИх нужно столько, сколько их использование будет оправдано текущими аппаратными и программными ресурсами.На более-менее современном железе и операционках потоки можно создавать тысячами. Поэтому потоков должно быть столько, сколько требуется в задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 17:43 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Ну, удачи тебе с 1000 потоков требуемых для решения задачи на однопроцессорной системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 18:48 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий Широков1000 потоков требуемых для решения задачи на однопроцессорной системе. Решать мегазадачи на железе с помойки - плохая привычка. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 19:38 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Да что тут обсуждать. Посмотрите на условие задачи. Юзер нажимает кнопку и после этого раз в несколько секунд запускается один поток. Где вы тут тысячи потоков нашли? Какая разница какие тут расходы на создание потока? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 19:46 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковНу, удачи тебе с 1000 потоков требуемых для решения задачи на однопроцессорной системе.В далёких нулевых был у меня дома компьютер, если правильно помню, AMD-что-то-там/300МГц/32Мб. IBM OS/2 JDK 1.1.8 могла создать только 900 с небольшим потоков. Но не из-за ограничения системы, а из-за собственных проблем. Так что даже для "железа с помойки" это не задача, а задачка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 19:52 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
satch, -- я не понял, зачем при потоках ещё и таймер. Обычно он не нужен. -- учти, что чтобы таймер имел возможность отработать, поток ОБЯЗАН обрабатывать оконные сообщения, (WM_xxx), в рабочих потоках это как правило не так. -- если потоку надо периодически выполнять какую-то порцию работы, которую ему дает другой поток, то это делается не таймерами, а на event-ах. Отдающий поток кладет данные в какое-то гнездо, и входит event, означающий, что есть что поделать, рабочий поток спит нас этом event, просыпается, когда его ввели, берет из гнезда работу, делает ее и снова засыпает на event. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 20:34 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий Широковsatch, - создай Event ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms682396(v=vs.85).aspx) - блокируйся в потоках на созданном событии ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx) - при срабатывании таймера устанавливай состояние таймера - это приведет с разблокировке потоков ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms686211(v=vs.85).aspx) Ok все замечательно, только на фиг нужен таймер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 20:35 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovsatchНо если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании таймера (например, раз в секунду) будет создаваться новый поток, правильно? Правильно. Он создастся, сделает что надо и умрёт. Так живут потоки. Лучше так не делать, будет слишком много потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 20:37 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyДа что тут обсуждать. Посмотрите на условие задачи. Юзер нажимает кнопку и после этого раз в несколько секунд запускается один поток. Где вы тут тысячи потоков нашли? Какая разница какие тут расходы на создание потока? Так смотря что он делать будет. Может каждый про часу считает ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2013, 20:42 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, В этом и состоит задача программиста - построить многопоточные вычисления так, чтобы они учитывали доступные программно-аппаратные ресурсы. С чем ты здесь конкретно не согласен? Или тебе до фанаря, на какой конфигурации у тебя запускается задача? Видать не все равно, раз ты заговорил о "ведре". Так значит все же многопотоковые вычисления это не столько "жадная" стратегия, а строгая дисциплина связанная с анализом доступным программно-аппаратных ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 02:07 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Вообще, у меня был единственная мысль - ты, как программист, должен контролировать создание потоков при организации многопотоковых вычислений. Твоя стратегия, как программиста, должна учитывать доступные программно-аппаратные ресурсы. Если ты бесконтрольно позволяешь своим программам потреблять ресурсы, что можно сказать о надежности твоих программ - задосить их легче легкого. Хотя, что-то мне подказывает, в реальных программах ты и пулы используешь и не даешь бесконтрольно создаваться неограниченному количеству потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 02:19 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
MasterZivsatch, -- я не понял, зачем при потоках ещё и таймер. Обычно он не нужен. -- учти, что чтобы таймер имел возможность отработать, поток ОБЯЗАН обрабатывать оконные сообщения, (WM_xxx), в рабочих потоках это как правило не так. -- если потоку надо периодически выполнять какую-то порцию работы, которую ему дает другой поток, то это делается не таймерами, а на event-ах. Отдающий поток кладет данные в какое-то гнездо, и входит event, означающий, что есть что поделать, рабочий поток спит нас этом event, просыпается, когда его ввели, берет из гнезда работу, делает ее и снова засыпает на event.У меня задача состоит в том, что в программе нужно организовать (асинхронно) опрос 4-х удаленных экземпляров СУБД MySQL на наличие новых данных в таблице (обычный select count(*) from таблица), например, опрашивать все экземпляры с периодичностью 1 раз в 5 сек => выходит что оптимальный вариант - это отдельный поток (скорее всего рабочий, а не интерфейсный) под каждый экземпляр + таймер. А как по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 08:15 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
[quot satch]MasterZiv опрашивать все экземпляры с периодичностью 1 раз в 5 сек => выходит что оптимальный вариант - это отдельный поток (скорее всего рабочий, а не интерфейсный) под каждый экземпляр + таймер. А как по-другому?Sleep(5000) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 09:47 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
[quot ?]satchпропущено... Sleep(5000) Не выдерживает критики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 10:21 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
[quot Анатолий Широков]?пропущено...Не выдерживает критики.Почему? Зациклить поток: Код: plaintext 1. 2. 3. 4. 5. Для данной задачи больше и не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 10:27 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
[quot m_Sla]Анатолий Широковпропущено... Почему? Зациклить поток: Код: plaintext 1. 2. 3. 4. 5. Для данной задачи больше и не нужно. Обычно такой цикл организуется следующим образом: Код: plaintext 1. 2. 3. 4. 5. Но топикастер всего лишь захотел дополнительно контролировать из главного потока запуск опроса - в чем криминал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 10:34 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковВообще, у меня был единственная мысль - ты, как программист, должен контролировать создание потоков при организации многопотоковых вычислений.Понимаете какое дело ... Некоторое время назад, в реальном коде, я сделал так, что система сразу создала несколько сотен потоков. До рефакторинга эти потоки создавались по мере надобности. Исходя из вашей логики - я поступил плохо. А это - не так. В реальной работе реально могли потребоваться все эти сотни потоков и если ресурсов не хватит при старте приложения, то админ быстро урежет осетра и, при необходимости, начнёт думать о выделении дополнительных ресурсов. В сочетании с тем, что мой подход позволил ещё и упростить код и сделать его правильным, ваш тезис о необходимости экономии ресурсов - просто рассыпается. Эффективный код уже использует столько ресурсов, сколько это действительно необходимо, поэтому навыки написания эффективного кода - важнее, чем рассуждения о необходимости экономии ресурсов. P.S. У меня был простой случай, анализ которого занял буквально пять минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 11:20 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
satchУ меня задача состоит в том, что в программе нужно организовать (асинхронно) опрос 4-х удаленных экземпляров СУБД MySQL на наличие новых данных в таблице (обычный select count(*) from таблица), например, опрашивать все экземпляры с периодичностью 1 раз в 5 сек => выходит что оптимальный вариант - это отдельный поток (скорее всего рабочий, а не интерфейсный) под каждый экземпляр + таймер. А как по-другому? отдельный поток плюс Sleep. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 11:27 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
[quot Анатолий Широков]m_Slaпропущено... Обычно такой цикл организуется следующим образом: Код: plaintext 1. 2. 3. 4. 5. Но топикастер всего лишь захотел дополнительно контролировать из главного потока запуск опроса - в чем криминал? Ну, можно и так. Но ты забегаешь вперёд, остановку потока мы ещё не обсуждали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 11:28 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovНекоторое время назад, в реальном коде, я сделал так, что система сразу создала несколько сотен потоков. До рефакторинга эти потоки создавались по мере надобности. Исходя из вашей логики - я поступил плохо. А это - не так. Да из любой логики это плохо, это просто неразумное расходование ресурсов системы. Кол-во потоков не должно превышать реального уровня параллелизма в системе с учётом коэффициента простоя потоков. Ну нет у тебя нескольких сотен процессоров, нет смысла создавать несколько сотен потоков. тебе надо создавать ровно столько потоков, сколько у тебя процессоров (ядер) , помноженное на коэффициент использования -- если в задаче половину времени поток простаивает -- на два, если 2/3 простаивает -- на три, и тому подобное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 11:34 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Мой призыв контролировать выделение ресурсов был переписан как "экономить" на ресурсах. Это несколько разные тезисы. Мой призыв создавать потоки, исходя из возможностей программно-аппаратного комплекса, а не только по первому требованию задачи - тоже был не услышан. Мне, пожалуй, больше нечего сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 11:44 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
MasterZivДа из любой логики это плохо, это просто неразумное расходование ресурсов системы.И вы даже можете обосновать эту неразумность?Кол-во потоков не должно превышать реального уровня параллелизма в системе с учётом коэффициента простоя потоков. Ну нет у тебя нескольких сотен процессоров, нет смысла создавать несколько сотен потоков."Это просто праздник какой-то" Карабас-Барабас голосом Владимира Этуша. Куча народу непросто лучше меня разбираются в том, что и как у нас работает, они ещё и курсы дистанционного обучения проводят. С выдачей справок о профнепригодности и развешиванием ярлыков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 11:54 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Да успокойтесь, никто никаких ярлыков не вешал и ни в какой профнепригодности вас не уличал. Стратегия ваша понятна - создавать столько потоков, сколько требуется задаче. Она работает отлично и слава богу. Вам лишь сказали, что такая стратегия не единственная. К слову, при создании веб-сервисов обычно применяют пулы потоков и избегают создания потоков по требованию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 12:07 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovMasterZivДа из любой логики это плохо, это просто неразумное расходование ресурсов системы.И вы даже можете обосновать эту неразумность?Кол-во потоков не должно превышать реального уровня параллелизма в системе с учётом коэффициента простоя потоков. Ну нет у тебя нескольких сотен процессоров, нет смысла создавать несколько сотен потоков."Это просто праздник какой-то" Карабас-Барабас голосом Владимира Этуша. Куча народу непросто лучше меня разбираются в том, что и как у нас работает, они ещё и курсы дистанционного обучения проводят. С выдачей справок о профнепригодности и развешиванием ярлыков. Ваш спор беспредметен. Можно загрузить конфигурацию CPU == THREAD на 100% а можно CPU == 100 * THREAD не загрузить. Все зависит от предмета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 12:12 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
вы даже можете обосновать эту неразумность? Да я вроде обосновал... Куча народу непросто лучше меня разбираются в том, что и как у нас работает, они ещё и курсы дистанционного обучения проводят. С выдачей справок о профнепригодности и развешиванием ярлыков. Так не нравится — не читай! Ты сюда вот чё пришел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 12:29 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковМой призыв создавать потоки, исходя из возможностей программно-аппаратного комплекса, а не только по первому требованию задачи - тоже был не услышан.Аналогично, но мне есть, что сказать - The AJP Connector , параметр minSpareThreads и описание (выделено мною): "The minimum number of threads always kept running . If not specified, the default of 10 is used". У нас этот параметр выставлен на несколько сотен. И не из-за дефектов используемого приложения, а потому, что я лучше разбираюсь в характере нагрузки этого сайта, нежели вы или MasterZiv. P.S. Есть разница между использованием десктопа и сервера. Последний спроектирован для надёжной работы при длительной высокой нагрузке. Поэтому, когда у вас - карьерный самосвал, то возить в нём пару мешков картошки - не всегда разумно. Хотя компьютерные "самосвалы", в отличие от карьерных и в этой ситуации - вполне эффективны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 12:29 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovАнатолий ШироковМой призыв создавать потоки, исходя из возможностей программно-аппаратного комплекса, а не только по первому требованию задачи - тоже был не услышан.Аналогично, но мне есть, что сказать - The AJP Connector , параметр minSpareThreads и описание (выделено мною): "The minimum number of threads always kept running . If not specified, the default of 10 is used". У нас этот параметр выставлен на несколько сотен. И не из-за дефектов используемого приложения, а потому, что я лучше разбираюсь в характере нагрузки этого сайта, нежели вы или MasterZiv. P.S. Есть разница между использованием десктопа и сервера. Последний спроектирован для надёжной работы при длительной высокой нагрузке. Поэтому, когда у вас - карьерный самосвал, то возить в нём пару мешков картошки - не всегда разумно. Хотя компьютерные "самосвалы", в отличие от карьерных и в этой ситуации - вполне эффективны. Аааа... Джааафа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 12:38 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Да, сам использует пул, а на сторону говорит, что де используйте сколько, сколько требуется задаче. Круто ты всех водишь за нос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 12:45 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковДа, сам использует пул, а на сторону говорит, что де используйте сколько, сколько требуется задаче. Круто ты всех водишь за нос.Ничего не понял ... Вы заявили, что тысяча потоков это много и нехорошо, я - что это совершенно не так и определяется требованиями задачи. Если вы хотели сказать, что потенциально неограниченный рост потоков это плохо, то - да, но как это соотносится с размером пула??? Ведь и размер пула может быть таким, что не хватит системных ресурсов на его создание/заполнение. А топикстартеру и пул никакой не нужен - у него этих потоков будет пять, как максимум . Но, тем не менее, он уже заранее беспокоится об экономии ресурсов. Смешно же, ей-богу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 12:57 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Во всех своих постах я ровно одно утверждал - нельзя проектировать систему так, что это может привести к неконтролируемому порождению неограниченного числа потоков. Ты же утверждал, что ипользуйте столько, сколько требуется задаче. Ну и кому теперь смешно должно быть? Сам всех за нос водил, а сам все же использует пул и полностью контролирует создание потоков. Чего ты тень на плетень навел. А 1000 потоков появилась исключительно как гипербола. Следуя твоему же утверждение, что если твоей задаче понадобится 60000 потоков, ты без оглядки на ресурсы эти потоки и создашь. Фиг, не создашь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:05 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковВо всех своих постах я ровно одно утверждал - нельзя проектировать систему так, что это может привести к неконтролируемому порождению неограниченного числа потоковЗадаче ТС это не грозит, наоборот, он занимается преждевременной оптимизациейСледуя твоему же утверждение, что если твоей задаче понадобится 60000 потоков, ты без оглядки на ресурсы эти потоки и создашь.Нет - я пересмотрю задачу и создам столько потоков, сколько потребуется для нового решения . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:10 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковВо всех своих постах я ровно одно утверждал - нельзя проектировать систему так, что это может привести к неконтролируемому порождению неограниченного числа потоков. Ну, ты это хотел утверждать, а писал - немного другое. Пока контролируется время работы потока и частота их порождения - их число не станет неограниченным. Таймер это как раз контроль частоты порождения. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:12 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Я так понял, что топикастер создал два потока по потоку на соединение с серверами СУБД (у него, как я понял, их два). Абсолютно не преждевременная оптимизация. Абсолютно нормальное решение. Появится третий сервер, он создаст третий поток. В чем же он так не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:13 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковВ чем же он так не прав? В использовании таймера, как уже не раз было сказано. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:16 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатолий ШироковВо всех своих постах я ровно одно утверждал - нельзя проектировать систему так, что это может привести к неконтролируемому порождению неограниченного числа потоков. Ну, ты это хотел утверждать, а писал - немного другое. Ты можешь привести примеры моих высказываний, где я писал "немного другое"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:17 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатолий ШироковВ чем же он так не прав? В использовании таймера, как уже не раз было сказано. Может у него на диалоге спин с частотой опроса серверов. Почему тогда не перенастроить таймер и не оповещать потоки, когда они могут приступить к опросу? Почему ты отвергаешь такую схему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:20 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковТы можешь привести примеры моих высказываний, где я писал "немного другое"? Могу: Анатолий ШироковИх нужно столько, сколько их использование будет оправдано текущими аппаратными и программными ресурсами. Бездумное и неконтролируемое создание потоков путь в никуда. Порождение потоков по таймеру - не "бездумное" и не "неконтролируемое". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:23 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковВ чем же он так не прав?В том, что беспокоится о стоимости создания потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:23 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковПочему ты отвергаешь такую схему? Потому что она ведёт к одновременному пробуждению нескольких потоков, которые начинают "толкаться локтями". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:25 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатолий ШироковТы можешь привести примеры моих высказываний, где я писал "немного другое"? Могу: Анатолий ШироковИх нужно столько, сколько их использование будет оправдано текущими аппаратными и программными ресурсами. Бездумное и неконтролируемое создание потоков путь в никуда. Порождение потоков по таймеру - не "бездумное" и не "неконтролируемое". Тебе уже привели пример, когда этот поток может выполнятся час - сколько у тебя с интервалом в 5 сек. будет создано потоков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:25 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатолий ШироковПочему ты отвергаешь такую схему? Потому что она ведёт к одновременному пробуждению нескольких потоков, которые начинают "толкаться локтями". Может у него будет другая стратегия пробуждения потоков, а может ему ядер хватает. Но почему такая схема не может существовать я не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:28 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovАнатолий ШироковВ чем же он так не прав?В том, что беспокоится о стоимости создания потоков. Ну, у него своя задача, и беспокоится или нет это его дело. По-моему, он выбрал правильную стратегию. Выделил на каждый сервер по потоку. К чему ты его призываешь, cоздавать потоки по требованию? А если у него нет априори информации о том, сколько будет выполняться опрос? А так - он точно знает у него два потока и даже если они не успевают что-то сделать за 5 сек, это не приведет к порождению бесполезных потоков только потому, что пришел час создать их (пришло событие от таймера). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:35 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий Широковпочему такая схема не может существовать я не понимаю Может, почему нет. Просто она избыточна. Я подозреваю, что вообще вся эта морока избыточна и автору можно просто задействовать штатную репликацию MySQL. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 13:43 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковBasil A. Sidorovпропущено... В том, что беспокоится о стоимости создания потоков. Ну, у него своя задача, и беспокоится или нет это его дело. По-моему, он выбрал правильную стратегию. Выделил на каждый сервер по потоку. К чему ты его призываешь, cоздавать потоки по требованию? А если у него нет априори информации о том, сколько будет выполняться опрос? А так - он точно знает у него два потока и даже если они не успевают что-то сделать за 5 сек, это не приведет к порождению бесполезных потоков только потому, что пришел час создать их (пришло событие от таймера). Ну он же ещё хотел в фоновом потоке таймер использовать, чтобы по нему перезапрашивать данные. Это-то 100% неправильно, просто не будет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 14:45 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
MasterZivНу он же ещё хотел в фоновом потоке таймер использовать, чтобы по нему перезапрашивать данные. Это-то 100% неправильно, просто не будет работать.Это смотря какой таймер. SetWaitableTimer работать будет. Да и для обычного таймера можно в потоке цикл обработки сообщений написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 14:53 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 14:59 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
давайте уже прикроем тему, автор смылся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 15:24 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
MasterZivдавайте уже прикроем тему, автор смылся.Я тут, ненадолго отлучался. По-поводу Sleep: у меня почему-то при выполнении этой функции в первом потоке, приостанавливается работа главного потока, и почему это присходит - пока не понятно. А вообще работа самого таймера в MFC мне до сих пор так и не понятно. Например, по таймеру SetTimer(1000) выполняется какое-то действие и это действие выполняется по времени более чем 1 сек, то как отработает таймер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 22:31 |
|
||
|
Как связать потоковую функцию с таймером
|
|||
|---|---|---|---|
|
#18+
satchMasterZivдавайте уже прикроем тему, автор смылся.Я тут, ненадолго отлучался. По-поводу Sleep: у меня почему-то при выполнении этой функции в первом потоке, приостанавливается работа главного потока, и почему это присходит - пока не понятно. А вообще работа самого таймера в MFC мне до сих пор так и не понятно. Например, по таймеру SetTimer(1000) выполняется какое-то действие и это действие выполняется по времени более чем 1 сек, то как отработает таймер? А ты почитай спецификацию на WM_TIMER и SetTimer, там всё написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 02:09 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2020100]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 280ms |
| total: | 469ms |

| 0 / 0 |
