|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.11.2013, 12:38 | #1 |
Форумчанин
Регистрация: 26.08.2013
Сообщений: 187
|
Создание процедуры/функции, с независимым выполнением.
Собственно вопрос:
Есть переменная INTEGER, которая имеет начальное значение к примеру: 10000 Нужно создать процедуру/функцию или ещё что-то, что будет каждую секунду отнимать 1000 от переменной: Код:
Допустим что: Переменная I имеет число к пример 1000000 Нужно запустить эту функцию/процедуру и затем уже выполнять другой код тут же, пример: Код:
|
05.11.2013, 12:47 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Ни чего не понял
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
05.11.2013, 12:52 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
таймер проще всего.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
05.11.2013, 13:59 | #4 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
1. Независимый от этого i. Тогда зачем вообще это считать (простой таймер на NN секунд оповестит нас в заданное время). 2. Зависимый от I. Например код показа этого самого i на одной из форм, в то время как сама форма(программа) занята сложными и длинными расчетами (или ждет каких-то данных из Internet). 3. другие варианты.
программа — запись алгоритма на языке понятном транслятору
|
|
05.11.2013, 14:15 | #5 | |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,885
|
Цитата:
|
|
05.11.2013, 14:41 | #6 | ||
Форумчанин
Регистрация: 26.08.2013
Сообщений: 187
|
Цитата:
Цитата:
то мы блокируем выполнение кое-какого кода на 1 час, в моём случае это: Код:
|
||
05.11.2013, 14:52 | #7 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
Если получение данные в синхронном режиме, то тоже. Асинхронный режим. Если он поддерживается используемыми компонентами доступа. Или получение данных в доп. потоке. + ОДИН таймер в основном потоке, используемый для обновления ВСЕХ значений счетчиков (для всех потоков получения информации). Вполне допустим вызов процедур объекта Ttread БЕЗ доп. синхронизации c изменением переменной (счетчика) из основного потока. ПРИ соблюдении условия внутри потоковой процедуры(Execute) данная переменная (свойство) НЕ МЕНЯЕТСЯ.
программа — запись алгоритма на языке понятном транслятору
|
|
05.11.2013, 18:03 | #8 | |
Форумчанин
Регистрация: 26.08.2013
Сообщений: 187
|
Цитата:
Код:
Код:
Последний раз редактировалось Winexcel; 05.11.2013 в 18:05. |
|
06.11.2013, 10:17 | #9 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
Сага о X,Y,Z X исходная задача Y ваша куча таймеров и переменных Z1 мой один таймер и ... Z... другие предложения Есть куча потоков, которые что-то делают, надо следить за временем их выполнения и если они трудятся очень долго, то менять их поведение. так должно выглядеть ваше описание задачи. По хорошему даже слово поток не должно звучать. А что-то делают наоборот должно быть конкретизировано, чтобы была видна их зависимость от внешних условий (получают какие-то данные) или наоборот их абсолютная независимость (выполняют долгие итерационные расчеты). Еще 2 Z Если ВАМ надо просто ограничить время работы расчетного потока по времени (и при этом времени реальном, а не временем работы потока) и сделать это внутри потока, то... 1. заводим локальную переменную private statrttime: TdateTime; 2. при старте потока засекаем время starttime:=Now; 3. вычисляем контрольное время 4. при работе периодически в любом удобном нам месте (например в начале каждой итерации цикла) проверяем контрольное время сравниваем его с текущим и если надо меняем поведение потока. В любом случае если вы хотите правильно остановить поток, вы должны обеспечить возможность завершения потоковой процедуры Execute периодически проверять какой либо флаг. Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 06.11.2013 в 10:24. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск с независимым регистром | bigbang22222 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 12.06.2012 10:05 |
Проблема с выполнением функции 2-й раз. | men232 | Visual C++ | 1 | 15.02.2012 16:41 |
Процедуры и функции | kuy | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 21.10.2011 18:21 |