powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как связать потоковую функцию с таймером
62 сообщений из 62, показаны все 3 страниц
Как связать потоковую функцию с таймером
    #38318609
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу в VS 2010 на C++, MFC'шное dialog-based-приложение. Задача такая: по нажатию на кнопку создать 2 дополнительных потока (AfxBeginThread), и чтобы каждый поток, точнее функция потока, выполнялись по таймеру (SetTimer). Потоки то создаются, их функции работают, а как их заставить выполняться по таймерам?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38318641
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38318726
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satchЗадача такая: по нажатию на кнопку создать 2 дополнительных потока
(AfxBeginThread), и чтобы каждый поток, точнее функция потока, выполнялись по таймеру
(SetTimer).
Какая-то внутренне противоречивая задача... Поток обычно создаётся чтобы работать. Надо по
таймеру - порождай поток в процедуре таймера (или по приходу WM_TIMER). Заранее порождать
потоки ни к чему.
Или, если потоки созданы сразу, то ни к чему уже таймер: они сами могут уснуть на нужное
время, а потом проснуться без всякого внешнего воздействия.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38318895
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovsatchЗадача такая: по нажатию на кнопку создать 2 дополнительных потока
(AfxBeginThread), и чтобы каждый поток, точнее функция потока, выполнялись по таймеру
(SetTimer).
Какая-то внутренне противоречивая задача... Поток обычно создаётся чтобы работать. Надо по
таймеру - порождай поток в процедуре таймера (или по приходу WM_TIMER). Заранее порождать
потоки ни к чему.
Или, если потоки созданы сразу, то ни к чему уже таймер: они сами могут уснуть на нужное
время, а потом проснуться без всякого внешнего воздействия.
Но если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании таймера (например, раз в секунду) будет создаваться новый поток, правильно?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38318963
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satchНо если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании
таймера (например, раз в секунду) будет создаваться новый поток, правильно?

Правильно. Он создастся, сделает что надо и умрёт. Так живут потоки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38318999
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovsatchНо если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании
таймера (например, раз в секунду) будет создаваться новый поток, правильно?

Правильно. Он создастся, сделает что надо и умрёт. Так живут потоки.
Не вы меня не поняли. Вот пример:
UINT ThreadWatcherEAF(LPVOID pParam)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
{
	MessageBeep(-1);
	return 0;
}
void CMyDlg::StartTimer(void)
{
	SetTimer(1, 1000, 0);
}
void CMyDlg::OnTimer(UINT_PTR nIDEvent)
{
	AfxBeginThread(*MyThread, NULL);

	 CDialogEx::OnTimer(nIDEvent);
}


То есть в данном примере раз в секунду будет создаваться новый поток, да? Например, запущу свое приложение на 10 секунд, и за это время наплодится 10 потоков?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319018
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satchза это время наплодится 10 потоков?
Да. В чём проблема-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319088
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Ну, например, в пуле потоков потоки живут иначе. Порой накладные расходы на создание потока столь высоки, по сравнению с заданиями которые они получают, что переходят на использование пулов потоков. Или же пулы потоков просто необходимы, когда требуется жесткий контроль над ресурсами. Вообщем, однозначного рецепта нет - "используй потоки так, и никак иначе", все зависит от задачи.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319124
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковПорой накладные расходы на создание потока столь высоки, по
сравнению с заданиями которые они получают, что переходят на использование пулов потоков.

Если задание такое мелкое, то его проще выполнить прямо в коде OnTimer.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319144
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovsatchза это время наплодится 10 потоков?
Да. В чём проблема-то?
Ну мне, как мне кажется, при создании потока выделяется память, а в данном случае я её бессмысленно расходую, ведь мне нужны не 10 потоков, а один.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319160
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satchНу мне, как мне кажется, при создании потока выделяется память, а в данном случае я её бессмысленно расходую, ведь мне нужны не 10 потоков, а один.Если один поток завершился до создания другого, то в чём проблема?
А если не завершился, то, может быть, вам, всё-таки, нужны десять потоков?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319251
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satchмне нужны не 10 потоков, а один.
Потоки - средство, а не цель. Их нужно столько, сколько требует задача.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319276
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Их нужно столько, сколько их использование будет оправдано текущими аппаратными и программными ресурсами. Бездумное и неконтролируемое создание потоков путь в никуда.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319312
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковИх нужно столько, сколько их использование будет оправдано текущими аппаратными и программными ресурсами.На более-менее современном железе и операционках потоки можно создавать тысячами.
Поэтому потоков должно быть столько, сколько требуется в задаче.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319442
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Ну, удачи тебе с 1000 потоков требуемых для решения задачи на однопроцессорной системе.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319503
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков1000 потоков требуемых для решения задачи на однопроцессорной
системе.
Решать мегазадачи на железе с помойки - плохая привычка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319514
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да что тут обсуждать.
Посмотрите на условие задачи.
Юзер нажимает кнопку и после этого раз в несколько секунд запускается один поток.

Где вы тут тысячи потоков нашли? Какая разница какие тут расходы на создание потока?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319525
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковНу, удачи тебе с 1000 потоков требуемых для решения задачи на однопроцессорной системе.В далёких нулевых был у меня дома компьютер, если правильно помню, AMD-что-то-там/300МГц/32Мб.
IBM OS/2 JDK 1.1.8 могла создать только 900 с небольшим потоков. Но не из-за ограничения системы, а из-за собственных проблем.
Так что даже для "железа с помойки" это не задача, а задачка.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319572
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satch,

-- я не понял, зачем при потоках ещё и таймер. Обычно он не нужен.
-- учти, что чтобы таймер имел возможность отработать, поток ОБЯЗАН обрабатывать оконные сообщения, (WM_xxx), в рабочих потоках это как правило не так.
-- если потоку надо периодически выполнять какую-то порцию работы, которую ему дает другой поток, то это делается не таймерами, а на event-ах. Отдающий поток кладет данные в какое-то гнездо, и входит event, означающий, что есть что поделать, рабочий поток спит нас этом event, просыпается, когда его ввели, берет из гнезда работу, делает ее и снова засыпает на event.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319576
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков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 все замечательно, только на фиг нужен таймер?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319581
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovsatchНо если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании
таймера (например, раз в секунду) будет создаваться новый поток, правильно?

Правильно. Он создастся, сделает что надо и умрёт. Так живут потоки.


Лучше так не делать, будет слишком много потоков.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319589
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyДа что тут обсуждать.
Посмотрите на условие задачи.
Юзер нажимает кнопку и после этого раз в несколько секунд запускается один поток.

Где вы тут тысячи потоков нашли? Какая разница какие тут расходы на создание потока?

Так смотря что он делать будет.
Может каждый про часу считает ...
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319810
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

В этом и состоит задача программиста - построить многопоточные вычисления так, чтобы они учитывали доступные программно-аппаратные ресурсы. С чем ты здесь конкретно не согласен? Или тебе до фанаря, на какой конфигурации у тебя запускается задача? Видать не все равно, раз ты заговорил о "ведре". Так значит все же многопотоковые вычисления это не столько "жадная" стратегия, а строгая дисциплина связанная с анализом доступным программно-аппаратных ресурсов.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319813
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Вообще, у меня был единственная мысль - ты, как программист, должен контролировать создание потоков при организации многопотоковых вычислений. Твоя стратегия, как программиста, должна учитывать доступные программно-аппаратные ресурсы. Если ты бесконтрольно позволяешь своим программам потреблять ресурсы, что можно сказать о надежности твоих программ - задосить их легче легкого. Хотя, что-то мне подказывает, в реальных программах ты и пулы используешь и не даешь бесконтрольно создаваться неограниченному количеству потоков.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319854
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivsatch,

-- я не понял, зачем при потоках ещё и таймер. Обычно он не нужен.
-- учти, что чтобы таймер имел возможность отработать, поток ОБЯЗАН обрабатывать оконные сообщения, (WM_xxx), в рабочих потоках это как правило не так.
-- если потоку надо периодически выполнять какую-то порцию работы, которую ему дает другой поток, то это делается не таймерами, а на event-ах. Отдающий поток кладет данные в какое-то гнездо, и входит event, означающий, что есть что поделать, рабочий поток спит нас этом event, просыпается, когда его ввели, берет из гнезда работу, делает ее и снова засыпает на event.У меня задача состоит в том, что в программе нужно организовать (асинхронно) опрос 4-х удаленных экземпляров СУБД MySQL на наличие новых данных в таблице (обычный select count(*) from таблица), например, опрашивать все экземпляры с периодичностью 1 раз в 5 сек => выходит что оптимальный вариант - это отдельный поток (скорее всего рабочий, а не интерфейсный) под каждый экземпляр + таймер. А как по-другому?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319949
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
[quot satch]MasterZiv опрашивать все экземпляры с периодичностью 1 раз в 5 сек => выходит что оптимальный вариант - это отдельный поток (скорее всего рабочий, а не интерфейсный) под каждый экземпляр + таймер. А как по-другому?Sleep(5000)
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38319996
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot ?]satchпропущено...
Sleep(5000)

Не выдерживает критики.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320014
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Анатолий Широков]?пропущено...Не выдерживает критики.Почему? Зациклить поток:
Код: plaintext
1.
2.
3.
4.
5.
    while(некое условие)
    {
        опрос();
        пауза(5 сек);
    }

Для данной задачи больше и не нужно.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320021
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot m_Sla]Анатолий Широковпропущено...
Почему? Зациклить поток:
Код: plaintext
1.
2.
3.
4.
5.
    while(некое условие)
    {
        опрос();
        пауза(5 сек);
    }

Для данной задачи больше и не нужно.

Обычно такой цикл организуется следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
hTerminateEvent - событие окончания;

while( WaitForSingleObject(hTerminateEvent, 5000) == WAIT_TIMEOUT ) {
   // опрос
}




Но топикастер всего лишь захотел дополнительно контролировать из главного потока запуск опроса - в чем криминал?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320120
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковВообще, у меня был единственная мысль - ты, как программист, должен контролировать создание потоков при организации многопотоковых вычислений.Понимаете какое дело ...
Некоторое время назад, в реальном коде, я сделал так, что система сразу создала несколько сотен потоков. До рефакторинга эти потоки создавались по мере надобности.
Исходя из вашей логики - я поступил плохо. А это - не так.
В реальной работе реально могли потребоваться все эти сотни потоков и если ресурсов не хватит при старте приложения, то админ быстро урежет осетра и, при необходимости, начнёт думать о выделении дополнительных ресурсов.
В сочетании с тем, что мой подход позволил ещё и упростить код и сделать его правильным, ваш тезис о необходимости экономии ресурсов - просто рассыпается.
Эффективный код уже использует столько ресурсов, сколько это действительно необходимо, поэтому навыки написания эффективного кода - важнее, чем рассуждения о необходимости экономии ресурсов.

P.S. У меня был простой случай, анализ которого занял буквально пять минут.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320131
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satchУ меня задача состоит в том, что в программе нужно организовать (асинхронно) опрос 4-х удаленных экземпляров СУБД MySQL на наличие новых данных в таблице (обычный select count(*) from таблица), например, опрашивать все экземпляры с периодичностью 1 раз в 5 сек => выходит что оптимальный вариант - это отдельный поток (скорее всего рабочий, а не интерфейсный) под каждый экземпляр + таймер. А как по-другому?

отдельный поток плюс Sleep.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320134
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Анатолий Широков]m_Slaпропущено...


Обычно такой цикл организуется следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
hTerminateEvent - событие окончания;

while( WaitForSingleObject(hTerminateEvent, 5000) == WAIT_TIMEOUT ) {
   // опрос
}




Но топикастер всего лишь захотел дополнительно контролировать из главного потока запуск опроса - в чем криминал?

Ну, можно и так. Но ты забегаешь вперёд, остановку потока мы ещё не обсуждали.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320142
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНекоторое время назад, в реальном коде, я сделал так, что система сразу создала несколько сотен потоков. До рефакторинга эти потоки создавались по мере надобности.
Исходя из вашей логики - я поступил плохо. А это - не так.


Да из любой логики это плохо, это просто неразумное расходование ресурсов системы.
Кол-во потоков не должно превышать реального уровня параллелизма в системе с учётом коэффициента простоя потоков.
Ну нет у тебя нескольких сотен процессоров, нет смысла создавать несколько сотен потоков.

тебе надо создавать ровно столько потоков, сколько у тебя процессоров (ядер) , помноженное на коэффициент использования --
если в задаче половину времени поток простаивает -- на два, если 2/3 простаивает -- на три, и тому подобное.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320169
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Мой призыв контролировать выделение ресурсов был переписан как "экономить" на ресурсах. Это несколько разные тезисы. Мой призыв создавать потоки, исходя из возможностей программно-аппаратного комплекса, а не только по первому требованию задачи - тоже был не услышан. Мне, пожалуй, больше нечего сказать.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320196
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivДа из любой логики это плохо, это просто неразумное расходование ресурсов системы.И вы даже можете обосновать эту неразумность?Кол-во потоков не должно превышать реального уровня параллелизма в системе с учётом коэффициента простоя потоков.
Ну нет у тебя нескольких сотен процессоров, нет смысла создавать несколько сотен потоков."Это просто праздник какой-то" Карабас-Барабас голосом Владимира Этуша.
Куча народу непросто лучше меня разбираются в том, что и как у нас работает, они ещё и курсы дистанционного обучения проводят.
С выдачей справок о профнепригодности и развешиванием ярлыков.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320216
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Да успокойтесь, никто никаких ярлыков не вешал и ни в какой профнепригодности вас не уличал. Стратегия ваша понятна - создавать столько потоков, сколько требуется задаче. Она работает отлично и слава богу. Вам лишь сказали, что такая стратегия не единственная. К слову, при создании веб-сервисов обычно применяют пулы потоков и избегают создания потоков по требованию.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320226
thread
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovMasterZivДа из любой логики это плохо, это просто неразумное расходование ресурсов системы.И вы даже можете обосновать эту неразумность?Кол-во потоков не должно превышать реального уровня параллелизма в системе с учётом коэффициента простоя потоков.
Ну нет у тебя нескольких сотен процессоров, нет смысла создавать несколько сотен потоков."Это просто праздник какой-то" Карабас-Барабас голосом Владимира Этуша.
Куча народу непросто лучше меня разбираются в том, что и как у нас работает, они ещё и курсы дистанционного обучения проводят.
С выдачей справок о профнепригодности и развешиванием ярлыков.

Ваш спор беспредметен.
Можно загрузить конфигурацию CPU == THREAD на 100% а можно CPU == 100 * THREAD не загрузить. Все зависит от предмета.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320275
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы даже можете обосновать эту неразумность?

Да я вроде обосновал...

Куча народу непросто лучше меня разбираются в том, что и как у нас работает, они ещё и курсы дистанционного обучения проводят.
С выдачей справок о профнепригодности и развешиванием ярлыков.


Так не нравится — не читай!
Ты сюда вот чё пришел?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320276
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. Есть разница между использованием десктопа и сервера.
Последний спроектирован для надёжной работы при длительной высокой нагрузке.
Поэтому, когда у вас - карьерный самосвал, то возить в нём пару мешков картошки - не всегда разумно.
Хотя компьютерные "самосвалы", в отличие от карьерных и в этой ситуации - вполне эффективны.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320301
thread
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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. Есть разница между использованием десктопа и сервера.
Последний спроектирован для надёжной работы при длительной высокой нагрузке.
Поэтому, когда у вас - карьерный самосвал, то возить в нём пару мешков картошки - не всегда разумно.
Хотя компьютерные "самосвалы", в отличие от карьерных и в этой ситуации - вполне эффективны.
Аааа... Джааафа...
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320321
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Да, сам использует пул, а на сторону говорит, что де используйте сколько, сколько требуется задаче. Круто ты всех водишь за нос.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320344
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковДа, сам использует пул, а на сторону говорит, что де используйте сколько, сколько требуется задаче. Круто ты всех водишь за нос.Ничего не понял ...
Вы заявили, что тысяча потоков это много и нехорошо, я - что это совершенно не так и определяется требованиями задачи.
Если вы хотели сказать, что потенциально неограниченный рост потоков это плохо, то - да, но как это соотносится с размером пула??? Ведь и размер пула может быть таким, что не хватит системных ресурсов на его создание/заполнение.
А топикстартеру и пул никакой не нужен - у него этих потоков будет пять, как максимум . Но, тем не менее, он уже заранее беспокоится об экономии ресурсов. Смешно же, ей-богу.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320363
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Во всех своих постах я ровно одно утверждал - нельзя проектировать систему так, что это может привести к неконтролируемому порождению неограниченного числа потоков. Ты же утверждал, что ипользуйте столько, сколько требуется задаче. Ну и кому теперь смешно должно быть? Сам всех за нос водил, а сам все же использует пул и полностью контролирует создание потоков. Чего ты тень на плетень навел. А 1000 потоков появилась исключительно как гипербола. Следуя твоему же утверждение, что если твоей задаче понадобится 60000 потоков, ты без оглядки на ресурсы эти потоки и создашь. Фиг, не создашь.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320373
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковВо всех своих постах я ровно одно утверждал - нельзя проектировать систему так, что это может привести к неконтролируемому порождению неограниченного числа потоковЗадаче ТС это не грозит, наоборот, он занимается преждевременной оптимизациейСледуя твоему же утверждение, что если твоей задаче понадобится 60000 потоков, ты без оглядки на ресурсы эти потоки и создашь.Нет - я пересмотрю задачу и создам столько потоков, сколько потребуется для нового решения .
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320378
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковВо всех своих постах я ровно одно утверждал - нельзя проектировать
систему так, что это может привести к неконтролируемому порождению неограниченного числа
потоков.
Ну, ты это хотел утверждать, а писал - немного другое.

Пока контролируется время работы потока и частота их порождения - их число не станет
неограниченным. Таймер это как раз контроль частоты порождения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320382
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Я так понял, что топикастер создал два потока по потоку на соединение с серверами СУБД (у него, как я понял, их два). Абсолютно не преждевременная оптимизация. Абсолютно нормальное решение. Появится третий сервер, он создаст третий поток. В чем же он так не прав?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320393
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковВ чем же он так не прав?
В использовании таймера, как уже не раз было сказано.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320395
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатолий ШироковВо всех своих постах я ровно одно утверждал - нельзя проектировать
систему так, что это может привести к неконтролируемому порождению неограниченного числа
потоков.
Ну, ты это хотел утверждать, а писал - немного другое.


Ты можешь привести примеры моих высказываний, где я писал "немного другое"?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320401
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатолий ШироковВ чем же он так не прав?
В использовании таймера, как уже не раз было сказано.


Может у него на диалоге спин с частотой опроса серверов. Почему тогда не перенастроить таймер и не оповещать потоки, когда они могут приступить к опросу? Почему ты отвергаешь такую схему?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320407
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковТы можешь привести примеры моих высказываний, где я писал "немного
другое"?
Могу:
Анатолий ШироковИх нужно столько, сколько их использование будет оправдано текущими
аппаратными и программными ресурсами. Бездумное и неконтролируемое создание потоков путь в
никуда.
Порождение потоков по таймеру - не "бездумное" и не "неконтролируемое".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320410
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковВ чем же он так не прав?В том, что беспокоится о стоимости создания потоков.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320415
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковПочему ты отвергаешь такую схему?
Потому что она ведёт к одновременному пробуждению нескольких потоков, которые начинают
"толкаться локтями".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320417
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатолий ШироковТы можешь привести примеры моих высказываний, где я писал "немного
другое"?
Могу:
Анатолий ШироковИх нужно столько, сколько их использование будет оправдано текущими
аппаратными и программными ресурсами. Бездумное и неконтролируемое создание потоков путь в
никуда.
Порождение потоков по таймеру - не "бездумное" и не "неконтролируемое".


Тебе уже привели пример, когда этот поток может выполнятся час - сколько у тебя с интервалом в 5 сек. будет создано потоков?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320425
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатолий ШироковПочему ты отвергаешь такую схему?
Потому что она ведёт к одновременному пробуждению нескольких потоков, которые начинают
"толкаться локтями".


Может у него будет другая стратегия пробуждения потоков, а может ему ядер хватает. Но почему такая схема не может существовать я не понимаю.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320439
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovАнатолий ШироковВ чем же он так не прав?В том, что беспокоится о стоимости создания потоков.

Ну, у него своя задача, и беспокоится или нет это его дело. По-моему, он выбрал правильную стратегию. Выделил на каждый сервер по потоку. К чему ты его призываешь, cоздавать потоки по требованию? А если у него нет априори информации о том, сколько будет выполняться опрос? А так - он точно знает у него два потока и даже если они не успевают что-то сделать за 5 сек, это не приведет к порождению бесполезных потоков только потому, что пришел час создать их (пришло событие от таймера).
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320455
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широковпочему такая схема не может существовать я не понимаю

Может, почему нет. Просто она избыточна.

Я подозреваю, что вообще вся эта морока избыточна и автору можно просто задействовать
штатную репликацию MySQL.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320586
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковBasil A. Sidorovпропущено...
В том, что беспокоится о стоимости создания потоков.

Ну, у него своя задача, и беспокоится или нет это его дело. По-моему, он выбрал правильную стратегию. Выделил на каждый сервер по потоку. К чему ты его призываешь, cоздавать потоки по требованию? А если у него нет априори информации о том, сколько будет выполняться опрос? А так - он точно знает у него два потока и даже если они не успевают что-то сделать за 5 сек, это не приведет к порождению бесполезных потоков только потому, что пришел час создать их (пришло событие от таймера).

Ну он же ещё хотел в фоновом потоке таймер использовать, чтобы по нему перезапрашивать данные.
Это-то 100% неправильно, просто не будет работать.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320603
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MasterZivНу он же ещё хотел в фоновом потоке таймер использовать, чтобы по нему перезапрашивать данные.
Это-то 100% неправильно, просто не будет работать.Это смотря какой таймер. SetWaitableTimer работать будет. Да и для обычного таймера можно в потоке цикл обработки сообщений написать.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320618
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Вообще, я понял задумку автора как-то так

...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38320692
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давайте уже прикроем тему, автор смылся.
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38326127
satch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivдавайте уже прикроем тему, автор смылся.Я тут, ненадолго отлучался. По-поводу Sleep: у меня почему-то при выполнении этой функции в первом потоке, приостанавливается работа главного потока, и почему это присходит - пока не понятно. А вообще работа самого таймера в MFC мне до сих пор так и не понятно. Например, по таймеру SetTimer(1000) выполняется какое-то действие и это действие выполняется по времени более чем 1 сек, то как отработает таймер?
...
Рейтинг: 0 / 0
Как связать потоковую функцию с таймером
    #38326187
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
satchMasterZivдавайте уже прикроем тему, автор смылся.Я тут, ненадолго отлучался. По-поводу Sleep: у меня почему-то при выполнении этой функции в первом потоке, приостанавливается работа главного потока, и почему это присходит - пока не понятно. А вообще работа самого таймера в MFC мне до сих пор так и не понятно. Например, по таймеру SetTimer(1000) выполняется какое-то действие и это действие выполняется по времени более чем 1 сек, то как отработает таймер?


А ты почитай спецификацию на WM_TIMER и SetTimer, там всё написано.
...
Рейтинг: 0 / 0
62 сообщений из 62, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как связать потоковую функцию с таймером
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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