Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
приму в дар короткую лекцию почему ком-порт в винде опрашивать в отдельном потоке круче чем по "таймеру", а то связного нигде не нашел объясниения
Отправлено
basilmak
(178.177.226.139)
12 марта 2011, г. 22:23
Составить ответ
|
Вернуться на конференцию
Ответы
Надо не опрашивать в отдельном потоке, а ждать событий порта в отдельном потоке.
-
Тумблер
(
пустое
, 12.03.2011, 23:55:45
46.249.0.115
)
Примерно один хрен(+), если опрашивать с интервалом 1 мс. Методом Sleep(0), например.
-
Дастун
(225 байт, 13.03.2011, 00:05:46
95.73.0.46
)
ну написал я обработчик "таймера" - система сгенерит событие "таймер тикнул" - и запустит по етому событию мою процедуру - которая глянет "есть чо?" и тут же завершится... Где пропасть между решениями?
-
basilmak
(
пустое
, 13.03.2011, 00:03:51
178.177.226.139
)
Напиши обработчик "ReadFile", "WriteFile".
-
Тумблер
(
пустое
, 13.03.2011, 19:05:41
46.249.0.118
)
о! вот тут ты и обкакался. С момента когда таймер тикнул до момента когда запустится твоя процедура пройдет столько времени, сколько необходимо текущей задаче чтоб завершиться- а это может быть долго, допустим прорисовка многомерного графика или еще чо тяжелое. А если ты следишь за портом в потоке то сразу как появится признак приема тамже в потоке и запускаешь свою процедуру, никак не завися от того чо там творится в диалоге, он сам посебе порт в потоке сам посебе.
-
колян безпарольный
(
пустое
, 13.03.2011, 01:07:49
193.200.150.125
)
чот ты путаешь) даже "прорисовка многомерной графики" не дает другим прогам работать какое-то разумное время (ну там 20-50мс как я понимаю), за которое ничего ужасного не происходит... Короче, папа у тебя не педагог а танкист)))
-
basilmak
(
пустое
, 13.03.2011, 11:40:12
178.176.135.66
)
Если сделано корректно, то сделано по WaitSingleObject - ни копейки машинного воемени не тратится. Все прочие варианты жрут проц даже если Sleepы ставить. И вообще...
-
POV
(117 байт, 13.03.2011, 01:04:57
91.203.67.71
)
Очевидно байки идут от тех кто ставит таймаут на чтение не равным нулю. Результат вполне очевиден
-
1111111
(
пустое
, 12.03.2011, 23:03:26
178.94.71.250
)
Управляемость приложения такая, что хочется такому программисту дать в рожу :)).
-
Юрий_СВ
(
пустое
, 12.03.2011, 22:48:7
213.5.199.158
)
Ответ:
-
ы
(
пустое
, 07.04.2011, 15:26:43
80.243.13.190
)
сказки какие-то....
-
basilmak
(
пустое
, 12.03.2011, 22:53:25
178.177.226.139
)
тебе вовсе не эта лекция нужна, тебе нужна лекция о многозадачности как таковой, хотя ты конечно в её существование не веришь.
-
колян безпарольный
(
пустое
, 12.03.2011, 22:47:45
193.200.150.82
)
ну если понимаешь хорошо, то опиши на пальцах как происходит прием при опросе в потоке и по "таймеру" >
-
basilmak
(824 байт, 12.03.2011, 23:02:27
178.177.226.139
)
обьясняю популярно- все что делается в обработчике таймера пользуется темже вычислительным ресурсом что и остальные операции программы. Все что делается в потоке происходит в отдельном ресурсе.
-
колян безпарольный
(
пустое
, 12.03.2011, 23:27:19
193.200.150.125
)
ну это типа паралельно какбы ещо приложение запускается? но оно все равно ведь работает када ему винда дает работать и не работает када другим дает?
-
basilmak
(
пустое
, 12.03.2011, 23:35:37
178.177.226.139
)
я и говорю, тебе нужна лекция по многозадачности, у тебя классическое восьмибитное мышление- для тебя многозадачность синоним многопроцессорности и если процессор один то многозадачности быть не может в принципе. Но темнемении она есть.
-
колян безпарольный
(
пустое
, 12.03.2011, 23:43:24
193.200.150.152
)
и в чем она? чо там изменилось со времен первых виндов? дают интервалы времени поработать всем кто просит... "подвешивают" када другим дают работать?
-
basilmak
(
пустое
, 12.03.2011, 23:47:3
178.177.226.139
)
нереально тебе чтото обьяснить, кефир-нягань просто курит в сторонке.
-
колян безпарольный
(
пустое
, 13.03.2011, 00:06:8
193.200.150.137
)
да умение объяснить - это первый признак что сам понял))))))))))
-
basilmak
(
пустое
, 13.03.2011, 00:10:35
178.177.226.139
)
Не путай приложение (Process) и поток (Thread). Не нужно для компорта Process заводить - Thread достсаточно. Выполняться будет в том же Process, что и осн. твоё приложение. Со всеми вытекающими.
-
Дастун
(
пустое
, 12.03.2011, 23:40:50
95.73.0.46
)
да ничо я не путаю - просто где тот афигенный выигрыш на который все намекают?))) теже яйца - тока вид сбоку...
-
basilmak
(
пустое
, 12.03.2011, 23:44:22
178.177.226.139
)
Ну я не знаю... Я вижу разницу, другие видят...Все видят! Возьми да попробуй сам - думаю, понравится.
-
Дастун
(
пустое
, 12.03.2011, 23:56:7
95.73.0.46
)
ну писал я на всякихСях с потоками - а на Дельфях всегда по таймеру - просто думал мож кто объяснит где те ужасные потери от "таймеров" - про них я сам читал и от студента-програмера днями слышал... Но очередную прогу с ними делаем...
-
basilmak
(
пустое
, 13.03.2011, 00:08:13
178.177.226.139
)
Был код на Сях. Его перенесли под билдер двумя способами...
-
POV
(382 байт, 13.03.2011, 01:14:4
91.203.67.71
)
в первом случае вы запустили процессы каждому из которых винда выдилила время T, во втором вы запустили один процесс и разделили его на потоки, каждому из которых досталось T/n времени
-
колян безпарольный
(
пустое
, 13.03.2011, 02:48:53
193.200.150.152
)
Консольная прога. Нихрена нет. ВИнда проц н ежрёт. Это Т стремится к максимуму.
-
POV
(
пустое
, 13.03.2011, 10:17:8
91.203.67.71
)
Да и правильно - раз умеешь и получается - делай и никого не слушай.
-
Дастун
(
пустое
, 13.03.2011, 00:13:45
95.73.0.46
)
ты попробуй сделать приложение с таймером миллисекунд 10, запусти его (чтоб в нём каждый раз компорт проверялся) и пробуй нажимать какие-нибудь кнопки в этом приложении
-
scorpion
(
пустое
, 12.03.2011, 22:29:49
85.140.217.59
)
ну много лет делаю - 50 или 100мс выставляю - и ничо... А что ты не посоветовал 1 мс выставить - скромность?)
-
basilmak
(
пустое
, 12.03.2011, 22:31:16
178.177.226.139
)
Не годится, если надо не просто байтики принимать, а ещё и отправлять тут же по приёму чё-нить. Типа протоколишко нехитрый реализовать.
-
Дастун
(
пустое
, 12.03.2011, 23:11:51
95.73.0.46
)
что такое "тут же"? какое время отклика мобыть программы коли как я понимаю она временами не бежит а ждет када другие бегут?
-
basilmak
(
пустое
, 12.03.2011, 23:18:13
178.177.226.139
)
Вот ситуация:(+)
-
Дастун
(367 байт, 12.03.2011, 23:23:6
95.73.0.46
)
а вопрос - када я API дал задание вывести в COM-порт байтик(и) где и на каком коране Билл клялся что ОС про всё забудет и пойдёт тыкать мой байтик в COM-порт для передачи? Где обещано что это время меньше 5 мс при любых возможных загрузках любого ПК с виндой? мож я что проглядел?
-
basilmak
(
пустое
, 12.03.2011, 23:29:2
178.177.226.139
)
Нигде. (+)
-
Дастун
(364 байт, 12.03.2011, 23:36:46
95.73.0.46
)
ну задвать в протоколе отклик 5мс и не быть увереным что будет всегда работать..)). Так и я про то - пральный обмен по ком-порту не грузит комп - т.к. связан просто с перекидыванием массивов байт из очереди в свой массив и наоборот - и даже "по таймеру"
-
basilmak
(
пустое
, 12.03.2011, 23:40:20
178.177.226.139
)
Ещё раз:(+)
-
Дастун
(531 байт, 12.03.2011, 23:53:43
95.73.0.46
)
зачем таймеру высокий приоритет? и как может грузить систему пара примитивных операций примерно 20 раз за секнду? Ну есь у меня приложения где тупо 8 "таймеров" для простоты залужено - и нет никаких тормозов...
-
basilmak
(
пустое
, 13.03.2011, 00:00:26
178.177.226.139
)
Статья была интересная бывшего импортного разработчика игр (не нашел ее вновь, ей много годков)...
-
POV
(326 байт, 13.03.2011, 01:29:5
91.203.67.71
)
Опять за рыбу деньги(+)
-
Дастун
(385 байт, 13.03.2011, 00:12:10
95.73.0.46
)
мож лучше протоколишко разумный делать - чем потом сражаться с проблемами которые сам себе придумал?)
-
basilmak
(
пустое
, 13.03.2011, 00:16:22
178.177.226.139
)
Можно, кто бы спорил. А можно взять протоколишко, который уже сложился, ничего не придумывая. И нехитрыми приёмами добиться его нормального исполнения. Кому что нравится.
-
Дастун
(
пустое
, 13.03.2011, 00:25:13
95.73.0.46
)
Как маленький, право, ответа не знаешь? Хочешь гарантий - используй ОС, которая даёт такие гарантии. Используешь винду - терпи :-))
-
Дастун
(
пустое
, 12.03.2011, 23:43:59
95.73.0.46
)
ответ я знаю - если протокол с интервалом в 5мс для лтклика при обмене по ком-порту сочинил - нада в управдомы))) Тут када 300 мс и то может обаматься если через сетку девайс по виртуальному компорту зацепят из Москвы в Северодвинске....
-
basilmak
(
пустое
, 12.03.2011, 23:51:35
178.177.226.139
)
Могу только повторить: винда - это винда. Тщательно планируй состав и функционал системы. XP Embedded конструируй, в конце концов. Драйвера свои сочиняй. Или подходящую ось пользуй.
-
Дастун
(
пустое
, 12.03.2011, 23:59:56
95.73.0.46
)
у товарища ниже задача была по одному байту из сом порта ловить. За 50 мс компорт чего хочеш накидать может.
-
scorpion
(
пустое
, 12.03.2011, 22:36:23
85.140.217.59
)
даже на 9600 байты идут через 1 мс и прога приложения не отловит "каждый", а када они с гарантией в буфер приемный упадут то его размер выбирают какой нада - от времени "заглядывания" туда... А в отдельном потоке разве можно с гарантией время отклика сделать? там ж тоже зависоны должны быть при работе
-
basilmak
(
пустое
, 12.03.2011, 22:47:2
178.177.226.139
)
Отчего-то если ставить таймаут 1 мс при длительности байта менее 1 мс нихрена не работает.Примерно до 20 мс надо таймаут увеличивать. Ибо винда - штука в себе.
-
POV
(
пустое
, 13.03.2011, 01:16:32
91.203.67.71
)
+1
-
scorpion
(
пустое
, 13.03.2011, 02:05:45
81.195.21.81
)
отдельный поток хорош тем что при его высокой загруженности не мешает нажимать кнопки в основной программе
-
scorpion
(
пустое
, 12.03.2011, 22:50:31
85.140.217.59
)
а "по таймеру" где может тормозить систему када ему нада "2 байта переслать"? Запуск процедуры обработки срабатывания "таймера" чтоль трудоемок для системы?
-
basilmak
(
пустое
, 12.03.2011, 23:06:53
178.177.226.139
)
если период таймера маловат то его обработка может занимать почти всё время, отведённое основному потоку.
-
scorpion
(
пустое
, 12.03.2011, 23:45:20
85.140.217.59
)
даже если вся обработка - глянуть на переменную "скока принятое" и завершиться т.к. там пусто?
-
basilmak
(
пустое
, 12.03.2011, 23:55:13
178.177.226.139
)
при малом периоде таймера реально тормозит основной процесс
-
scorpion
(
пустое
, 13.03.2011, 00:11:10
81.195.23.213
)
когда надо 100 мс я и сам таймер пользую.
-
scorpion
(
пустое
, 12.03.2011, 22:36:51
85.140.217.59
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 89:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru