Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26066
Рейтинг: 2120
#61: 2007-08-20 11:01:52 ЛС | профиль | цитата
Dilma писал(а):
про цикл не понял.

Я имел ввиду регулярную выдачу события onExec с задержкой между итерациями, обеспеченной внутренней командой Sleep().

[size=-2]------ Добавлено в 11:01
Я так подумал, что проще будет нарезать компонент, типа MMTimer, не зависящий от аппликаций, специально для работы в сервисах.
карма: 22

0
Ответов: 2125
Рейтинг: 159
#62: 2007-08-20 11:15:49 ЛС | профиль | цитата
nesco писал(а):
сервис NT поддерживает только свой таймер

На самом деле нету там никакого таймера. Есть только задержка между вызовами onStep, чтобы когда сервис ничего не делает, процессор не грузился. Если у тебя килобайтные схемы долго выполняются, то и onStep будет вызываться не чаще, чем это возможно, да к тому же с задержкой, указанной в свойствах. Так что точность в любом случае зависит от того, насколько много работы выполняется в одном шаге onStep.

Кстати, компонент Sleep на 100% использует процессор, чтобы как можно точнее отмерять промежуток времени. Но вот надо ли такое использовать - вопрос.
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#63: 2007-08-20 11:26:14 ЛС | профиль | цитата
tsdima, да не нужна мне такая точность. Мне нужно несколько таймеров с приблизительной точность. Например: первый 10..20 ms, второй 250..500, третий 1..1,5 sec. Так как событие у сервиса одно, то его придется делителями выгонять на самое большое значение, естественно, что по каждому из счетчиков будет торможение на выполение сторонних операций, и в результате на выходе последнего делителя получится не ~1 sec, а ~3..4 sec. И нафиг он мне такой нужен? Не в сервисных приложениях необходимая точность достигается применением нескольких таймеров и они дают, тем больше точность, чем длиннее итерация -- там 1 sec, это почти одна секунда.
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#64: 2007-08-20 11:54:55 ЛС | профиль | цитата
В таком случае позволю себе заметить, что это:
nesco писал(а):
Если бы Thread не высыпался после определенного времени при работе в цикле, я бы его давно применил

полная фигня с заявление о некоторой баги в технологиии работы потоков в Windows. Истинность чего мягко говоря сомнительна. Скорее схема содержит ошибочную логику доступа к разделяемым данным.


карма: 26
0
Ответов: 2125
Рейтинг: 159
#65: 2007-08-20 12:37:58 ЛС | профиль | цитата
nesco писал(а):
будет торможение на выполение сторонних операций

Сторонние операции можно делать в отдельном потоке (незабывая блокировать повторный пуск)
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#66: 2007-08-20 12:39:57 ЛС | профиль | цитата
Dilma писал(а):
Скорее схема содержит ошибочную логику доступа к разделяемым данным

Может быть, я не исключаю. Но, все же, один единствееный Thread, имеющий задержку в 3 ms, о каком распределении данных может быть речь? Но я сделал собственный компонент по аналогии со схемой, где убрал Sleep, бага (а может и не бага) с высыпанием пропала. Я ни коим разом не утверждал, что это именно бага, просто констатировал обнаруженный факт.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#67: 2007-08-20 12:48:52 ЛС | профиль | цитата
nesco писал(а):
просто констатировал обнаруженный факт

Ничего ты не констатировал.
И совершенно не очевидно, что обнаруженное является фактом вообще
Если пишешь о баге - делай воспроизводимый баг репорт.

Не хочешь - да на здоровье, но не надо "констатировать", и тем более употреблять термины "обнаруженный факт"

Или тебе очень нравится стиль Tad-а: прокукарекал, а там хоть не рассветай
карма: 9

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#68: 2007-08-20 13:52:17 ЛС | профиль | цитата
Galkov, я уже говорил, что повторить его очень сложно, практически невозможно. Я даже эксперимент поставить нормально не могу на рабочей системе, на эмуляторах не выдает, и ждать, пока он появится в течении суток, тоже -- идиотство. Считайте, что этого разговора не было, потому, что я не могу его повторить, для меня эта фича -- факт, для вас -- как хотите. Оно появляется молча, никуда ничего не записывая и не выдавая никакой системной ошибки, приложение просто закрывается, и все. Возможно ошибка именно в распределении данных.

[size=-2]------ Добавлено в 13:11
Для тех, кому интересен независимый таймер для сервисов, вот, потестируйте. Полный аналог обычного, но является независимым
Кладов писал(а):
Multimedia timer incapsulation object. Does not require Applet or special
window to handle it
Особо много таких таймеров применять не следует, тк
Кладов писал(а):
System creates a thread for each high resolution
timer, so using many such objects can degrade total PC performance


-- Удален с выходом исправленного релиза -- Ссылка на новый релиз http://www.hiasm.com/xf//getfile/6923
карма: 22

0
Ответов: 9906
Рейтинг: 351
#69: 2007-08-20 13:56:03 ЛС | профиль | цитата
Ну и как ты собираешься работать с разными потоками не имея возможности синхронизации
Десяти-пальцевым методом
карма: 9

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#70: 2007-08-20 14:01:16 ЛС | профиль | цитата
Galkov писал(а):
Ну и как ты собираешься работать с разными потоками не имея возможности синхронизации

Ты подробнее объяснить можешь? И какие предложения с твоей стороны? И про что вообще разговор, про MMTаймер, чтоли?
карма: 22

0
Ответов: 9906
Рейтинг: 351
#71: 2007-08-20 14:15:09 ЛС | профиль | цитата
Будем считать, что ответ на этот вопрос:
nesco писал(а):
Оно появляется молча, никуда ничего не записывая и не выдавая никакой системной ошибки, приложение просто закрывается, и все.
- мы получили
карма: 9

0
Администрация
Ответов: 15294
Рейтинг: 1518
#72: 2007-08-20 14:22:28 ЛС | профиль | цитата
nesco писал(а):
Но, все же, один единствееный Thread, имеющий задержку в 3 ms, о каком распределении данных может быть речь?

я опять не понял: к точкам элемента ничего не было подключено? Сосбтвенно спор считаю бесполезным поскольку в рабочем цикле элемента Thread никаких баг нет и быть не может по той простой причине, что там всего три строки кода => бага в программе(которую мы не видели кстате).

nesco писал(а):
для вас -- как хотите

для нас важно, чтобы на форуме не распространялись бездоказательные выводы о багах в элементах палитры.

[size=-2]------ Добавлено в 14:22
Galkov писал(а):
Будем считать, что ответ на этот вопрос:

согласен
карма: 26
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#73: 2007-08-20 14:31:49 ЛС | профиль | цитата
Galkov, я всеравно поймаю откуда оно лезет, не сегодня, так завтра. С ММТаймером тоже надо быть осторожным. Я уже нарвался на уничтожение динамических мультиков при работающем ММТаймере, но решилось очень просто -- сначало останавливаем ММТаймер, затем по событию onStop уничтожаем мультики. Создается все в обратном порядке, сначала создаем мультики, затем включаем ММТаймер.

[size=-2]------ Добавлено в 14:31
Dilma писал(а):
для нас важно, чтобы на форуме не распространялись бездоказательные выводы о багах в элементах палитры

Хорошо, я уже понял, будем считать, что этого не было. Вот вякнул, не подумав, а за свои слова отвечать надо, а ответить, оказалось, пока нечем.
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#74: 2007-08-20 15:25:12 ЛС | профиль | цитата
nesco писал(а):
Я уже нарвался на уничтожение динамических мультиков при работающем ММТаймере, но решилось очень просто -- сначало останавливаем ММТаймер

есть такое дело. С обычным таймером тоже самое будет. И с удалением из самого себя.
карма: 26
0
Ответов: 9906
Рейтинг: 351
#75: 2007-08-20 15:43:00 ЛС | профиль | цитата
nesco писал(а):
сначало останавливаем ММТаймер, затем по событию onStop уничтожаем мультики

Пордон, а что, деструктор некого элемента MMTimer остановки не делает

[size=-2]------ Добавлено в 15:43
nesco писал(а):
я всеравно поймаю откуда оно лезет, не сегодня, так завтра

Увлекательное занятие: заложить гранату, а потом искать от чего она взрывается
карма: 9

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)