Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
03.07.2013, 13:26
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Пишу в VS 2010 на C++, MFC'шное dialog-based-приложение. Задача такая: по нажатию на кнопку создать 2 дополнительных потока (AfxBeginThread), и чтобы каждый поток, точнее функция потока, выполнялись по таймеру (SetTimer). Потоки то создаются, их функции работают, а как их заставить выполняться по таймерам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 13:40
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#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, 14:10
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
satchЗадача такая: по нажатию на кнопку создать 2 дополнительных потока (AfxBeginThread), и чтобы каждый поток, точнее функция потока, выполнялись по таймеру (SetTimer). Какая-то внутренне противоречивая задача... Поток обычно создаётся чтобы работать. Надо по таймеру - порождай поток в процедуре таймера (или по приходу WM_TIMER). Заранее порождать потоки ни к чему. Или, если потоки созданы сразу, то ни к чему уже таймер: они сами могут уснуть на нужное время, а потом проснуться без всякого внешнего воздействия. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 15:07
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Dimitry SibiryakovsatchЗадача такая: по нажатию на кнопку создать 2 дополнительных потока (AfxBeginThread), и чтобы каждый поток, точнее функция потока, выполнялись по таймеру (SetTimer). Какая-то внутренне противоречивая задача... Поток обычно создаётся чтобы работать. Надо по таймеру - порождай поток в процедуре таймера (или по приходу WM_TIMER). Заранее порождать потоки ни к чему. Или, если потоки созданы сразу, то ни к чему уже таймер: они сами могут уснуть на нужное время, а потом проснуться без всякого внешнего воздействия. Но если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании таймера (например, раз в секунду) будет создаваться новый поток, правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 15:26
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
satchНо если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании таймера (например, раз в секунду) будет создаваться новый поток, правильно? Правильно. Он создастся, сделает что надо и умрёт. Так живут потоки. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 15:40
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#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:50
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
satchза это время наплодится 10 потоков? Да. В чём проблема-то? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 16:22
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Dimitry Sibiryakov, Ну, например, в пуле потоков потоки живут иначе. Порой накладные расходы на создание потока столь высоки, по сравнению с заданиями которые они получают, что переходят на использование пулов потоков. Или же пулы потоков просто необходимы, когда требуется жесткий контроль над ресурсами. Вообщем, однозначного рецепта нет - "используй потоки так, и никак иначе", все зависит от задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 16:34
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Анатолий ШироковПорой накладные расходы на создание потока столь высоки, по сравнению с заданиями которые они получают, что переходят на использование пулов потоков. Если задание такое мелкое, то его проще выполнить прямо в коде OnTimer. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 16:40
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Dimitry Sibiryakovsatchза это время наплодится 10 потоков? Да. В чём проблема-то? Ну мне, как мне кажется, при создании потока выделяется память, а в данном случае я её бессмысленно расходую, ведь мне нужны не 10 потоков, а один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 16:45
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
satchНу мне, как мне кажется, при создании потока выделяется память, а в данном случае я её бессмысленно расходую, ведь мне нужны не 10 потоков, а один.Если один поток завершился до создания другого, то в чём проблема? А если не завершился, то, может быть, вам, всё-таки, нужны десять потоков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 17:18
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
satchмне нужны не 10 потоков, а один. Потоки - средство, а не цель. Их нужно столько, сколько требует задача. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 17:29
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Dimitry Sibiryakov, Их нужно столько, сколько их использование будет оправдано текущими аппаратными и программными ресурсами. Бездумное и неконтролируемое создание потоков путь в никуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 17:43
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Анатолий ШироковИх нужно столько, сколько их использование будет оправдано текущими аппаратными и программными ресурсами.На более-менее современном железе и операционках потоки можно создавать тысячами. Поэтому потоков должно быть столько, сколько требуется в задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 18:48
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Basil A. Sidorov, Ну, удачи тебе с 1000 потоков требуемых для решения задачи на однопроцессорной системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 19:38
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Анатолий Широков1000 потоков требуемых для решения задачи на однопроцессорной системе. Решать мегазадачи на железе с помойки - плохая привычка. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 19:46
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Да что тут обсуждать. Посмотрите на условие задачи. Юзер нажимает кнопку и после этого раз в несколько секунд запускается один поток. Где вы тут тысячи потоков нашли? Какая разница какие тут расходы на создание потока? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 19:52
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Анатолий ШироковНу, удачи тебе с 1000 потоков требуемых для решения задачи на однопроцессорной системе.В далёких нулевых был у меня дома компьютер, если правильно помню, AMD-что-то-там/300МГц/32Мб. IBM OS/2 JDK 1.1.8 могла создать только 900 с небольшим потоков. Но не из-за ограничения системы, а из-за собственных проблем. Так что даже для "железа с помойки" это не задача, а задачка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 20:34
|
|||
|---|---|---|---|
Как связать потоковую функцию с таймером |
|||
|
#18+
satch, -- я не понял, зачем при потоках ещё и таймер. Обычно он не нужен. -- учти, что чтобы таймер имел возможность отработать, поток ОБЯЗАН обрабатывать оконные сообщения, (WM_xxx), в рабочих потоках это как правило не так. -- если потоку надо периодически выполнять какую-то порцию работы, которую ему дает другой поток, то это делается не таймерами, а на event-ах. Отдающий поток кладет данные в какое-то гнездо, и входит event, означающий, что есть что поделать, рабочий поток спит нас этом event, просыпается, когда его ввели, берет из гнезда работу, делает ее и снова засыпает на event. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 20:35
|
|||
|---|---|---|---|
Как связать потоковую функцию с таймером |
|||
|
#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:37
|
|||
|---|---|---|---|
Как связать потоковую функцию с таймером |
|||
|
#18+
Dimitry SibiryakovsatchНо если я поток создам в процедуре таймера OnTimer, то при каждом срабатывании таймера (например, раз в секунду) будет создаваться новый поток, правильно? Правильно. Он создастся, сделает что надо и умрёт. Так живут потоки. Лучше так не делать, будет слишком много потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2013, 20:42
|
|||
|---|---|---|---|
Как связать потоковую функцию с таймером |
|||
|
#18+
Anatoly MoskovskyДа что тут обсуждать. Посмотрите на условие задачи. Юзер нажимает кнопку и после этого раз в несколько секунд запускается один поток. Где вы тут тысячи потоков нашли? Какая разница какие тут расходы на создание потока? Так смотря что он делать будет. Может каждый про часу считает ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2013, 02:07
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Dimitry Sibiryakov, В этом и состоит задача программиста - построить многопоточные вычисления так, чтобы они учитывали доступные программно-аппаратные ресурсы. С чем ты здесь конкретно не согласен? Или тебе до фанаря, на какой конфигурации у тебя запускается задача? Видать не все равно, раз ты заговорил о "ведре". Так значит все же многопотоковые вычисления это не столько "жадная" стратегия, а строгая дисциплина связанная с анализом доступным программно-аппаратных ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2013, 02:19
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
Basil A. Sidorov, Вообще, у меня был единственная мысль - ты, как программист, должен контролировать создание потоков при организации многопотоковых вычислений. Твоя стратегия, как программиста, должна учитывать доступные программно-аппаратные ресурсы. Если ты бесконтрольно позволяешь своим программам потреблять ресурсы, что можно сказать о надежности твоих программ - задосить их легче легкого. Хотя, что-то мне подказывает, в реальных программах ты и пулы используешь и не даешь бесконтрольно создаваться неограниченному количеству потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2013, 08:15
|
|||
|---|---|---|---|
|
|||
Как связать потоковую функцию с таймером |
|||
|
#18+
MasterZivsatch, -- я не понял, зачем при потоках ещё и таймер. Обычно он не нужен. -- учти, что чтобы таймер имел возможность отработать, поток ОБЯЗАН обрабатывать оконные сообщения, (WM_xxx), в рабочих потоках это как правило не так. -- если потоку надо периодически выполнять какую-то порцию работы, которую ему дает другой поток, то это делается не таймерами, а на event-ах. Отдающий поток кладет данные в какое-то гнездо, и входит event, означающий, что есть что поделать, рабочий поток спит нас этом event, просыпается, когда его ввели, берет из гнезда работу, делает ее и снова засыпает на event.У меня задача состоит в том, что в программе нужно организовать (асинхронно) опрос 4-х удаленных экземпляров СУБД MySQL на наличие новых данных в таблице (обычный select count(*) from таблица), например, опрашивать все экземпляры с периодичностью 1 раз в 5 сек => выходит что оптимальный вариант - это отдельный поток (скорее всего рабочий, а не интерфейсный) под каждый экземпляр + таймер. А как по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2020100]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 283ms |

| 0 / 0 |
