|
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
|
|
Что лучше - задать ожидание для нескольких потоков или выполнять их, постоянно проверяя время09.11.2012, 12:02. Показов 1502. Ответов 11
Метки нет (Все метки)
Всем привет. Практический вопрос: есть класс, в котором экземпляры создают кучу информации в том числе запоминают путь к программам. Также есть дата, когда нужно запускать эти программы. Что лучше: создавать потоки для каждой программы (в смысле открыть поток и поставить Thread.sleep на нужное кол-во времени), либо создать один поток, который будет с определенной задержкой (дабы не нагружать процессор) сверять пришло ли время запуска программы и вызывать программу. Как вы считаете?
0
|
|
| 09.11.2012, 12:02 | |
|
Ответы с готовыми решениями:
11
Можно ли выполнять параллельно запись с нескольких потоков в ConcurrentQueue? Зимнее или летнее время? Что лучше? |
|
310 / 206 / 44
Регистрация: 15.02.2012
Сообщений: 605
|
|
| 09.11.2012, 12:09 | |
|
житейские соображения подсказывают, что много потоков, которые 90% времени спят - это совсем не есть хорошо ... если память не изменяет, запущенный поток сразу отхватывает мегабайт оперативной памяти и никому её не отдает, независимо, делает он чего-нибудь или нет
0
|
|
|
341 / 341 / 90
Регистрация: 04.03.2010
Сообщений: 648
|
||
| 09.11.2012, 12:26 | ||
|
зачем мудрить, есть готовый механизм
http://msdn.microsoft.com/ru-r... timer.aspx
0
|
||
|
310 / 206 / 44
Регистрация: 15.02.2012
Сообщений: 605
|
|
| 09.11.2012, 12:28 | |
|
0
|
|
|
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
|
|
| 09.11.2012, 12:30 | |
|
не совсем ясна мысль:
из примера с кучей потоков следует, что вы ЗНАЕТЕ через сколько времени вам требуется запустить каждую из программ (вы же в Sleep это пишете) т.е. есть данные вида: программа 1 - через 1с программа 2 - через 2с программа 3 - через 5с и т.д. если у вас есть эти данные что мешает сделать в одном потоке (в том, в котором вы хотите делать множество проверок) sleep на минимальное время, запустить программу, вычесть из времени остальных время Sleep'а, повторить, т.е. с данными выше: Sleep(1000); программа 1 - запуск не требуется программа 2 - через 2-1=1с программа 3 - через 5-1=4с и т.д. если у вас НЕТ данных о том через какое время необходимо запускать программы, то чем вам поможет куча потоков которые точно так же будут делать каждый свою проверку?
0
|
|
|
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
|
||
| 09.11.2012, 12:38 [ТС] | ||
|
0
|
||
|
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
|
|
| 09.11.2012, 12:49 | |
|
я понял как вы сделали, не понятно зачем постоянные проверки если уже есть данные через сколько что запускать...
0
|
|
|
310 / 206 / 44
Регистрация: 15.02.2012
Сообщений: 605
|
|
| 09.11.2012, 12:51 | |
|
время запуска дочерних программ видимо задано по календарной дате, а не в виде задержки от запуска основного приложения
0
|
|
|
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
|
||
| 09.11.2012, 12:54 | ||
|
тогда почему отдельные потоки знают сколько им ожидать?
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 09.11.2012, 12:58 | |
|
titans2011, для таких целей лучше всего использовать таймер - он и поток отжирать не будет (а поток - это весьма дорогой ресурс) и тикать относительно вовремя (если нужна высокая точность, то можно использовать мультимедийный таймер).
Создайте отсортированный по дате выполнения список задач, при старте доставайте первую задачу, высчитывайте разницу между текущим временем и датой выполнения и ставьте таймер на этот промежуток. Когда таймер тикнет - запускайте задачу, потом считывайте следующую по списку, высчитывайте промежуток, ставьте таймер и все по кругу.
0
|
|
| 09.11.2012, 12:58 | |
|
0
|
|
|
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
|
||
| 09.11.2012, 13:34 [ТС] | ||
|
0
|
||
| 09.11.2012, 13:34 | |
|
Помогаю со студенческими работами здесь
12
Глобальные и локальные переменные: что лучше (или что для чего и в чем конкретная разница)? Экран смерти во время запуска проверки антивируса или просто во время открытия нескольких программ Как для нескольких компонентов выполнять одно событие Что лучше для школьников PascalABC.NET или C++ Что лучше для написания графического интерфейса: C++ или C#? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|