Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
[C++] Спасибо друзья! 26.11.01 23:13 Число просмотров: 937
Автор: КоЛЯн Статус: Незарегистрированный пользователь
|
Спасибо мужики!
По моему, kabanchik ближе подошел к сути с многопоточностью, я и сам , честно говоря , склонялся к такому же результату - посмотрим, куда меня с таким объяснением пошлют...
Спасибо и "последнему из могикан" - твое решение на сто процентов совпадает с моим первоначальным, которое я через 5 минут после вникания в суть показал 'шефу'- ну тот меня и пошел гнать (вот зараза) по много***чности- не нравится ентому субъекту видите-ли паскаль+асм - давай ему ооп. Он бы меня еще за яву вебстарт посадил - у нас сейчас последний писк - работы предлагают от 400 у.е. до непреличия ...
|
<programming>
|
[C++] Кто здесь cильный в мультизадачности ? 26.11.01 20:56
Автор: КоЛЯн Статус: Незарегистрированный пользователь
|
Дело вот в чем. Собираю контроллер, ходящий по кругу и в каждом
дискретном положении считывающий число фотонов. Ну считывание
осуществляется быстрыми двоично-десятичными счетчиками, данные через
'спектрум' - Z180 - загоняются в ПК.
Так вот чел поставил мне задачу: как используя многозадачность считать
данные в том случае, если время считывания меньше времени измерения-
это по-видимому нужно понимать так: для заправки единичных данных в комп
необходимо положим 10 секунд, а для считывания в одном положении установки
числа фотонов - 7 секунд, т.е. данные хронически не успевают считываться...
И этот 'светоч премудрости' на полном серьезе грузит мне, что данные можно
обработать лишь при использовании одной только мультизадачности без каких
либо электронных ухищрений типа УВХ и т.д.
???
НУ НЕ ПОНИМАЮ Я, НА КОЙ Х Р Е Н МНЕ ЗДЕСЬ СДАЛАСЬ МУЛЬТИЗАДАЧНОСТЬ
И КАК ЕЕ ИСПОЛЬЗОВАТЬ
???
p.s.
------------ ВРЕМЯ ПОСЫЛКИ ДАННЫХ------- |------- ВРЕМЯ СЧИТЫВАНИЯ------
|
|
[C++] Кто здесь cильный в мультизадачности ? 27.11.01 15:55
Автор: IgorR Статус: Незарегистрированный пользователь
|
> Так вот чел поставил мне задачу: как используя > многозадачность считать > данные в том случае, если время считывания меньше времени > измерения
На первый взгляд ты не правильно понял задачу. И путаешь всех с определениями "считывание", "измерение", "посылка". Надо бы определиться. А на счет мультизадачности это ИМХО бред. Если это СОМ то там же УАПП. Все что можно сделать это настроить его на максимальную скорость приема. Или я чего то не понимаю...
|
| |
Ну перепутал малость - смысл люди все равно поняли...() 27.11.01 21:06
Автор: КоЛЯн Статус: Незарегистрированный пользователь
|
1)Максимальной скорости приема все равно похоже не хватвет...
2)Ну перепутал там два слова местами - обязательно мордой тыкать нада ?..
|
| | |
Ну перепутал малость - смысл люди все равно поняли...() 28.11.01 09:14
Автор: IgorR Статус: Незарегистрированный пользователь
|
> 1)Максимальной скорости приема все равно похоже не > хватвет...
Ну тогда опаньки :)
> 2)Ну перепутал там два слова местами - обязательно мордой > тыкать нада ?..
Извини, но я просто не понял что брать за истину, то ли "время считывания меньше времени измерения", то ли наоборот.
Да, кстати, а как насчет скорости приема от девайса к контроллеру и посылки от контроллера к ПК?
Что говорит 'светоч премудрости' ?
|
|
[C++] Два вопроса 27.11.01 10:53
Автор: PS <PS> Статус: Elderman
|
> необходимо положим 10 секунд, а для считывания в одном > положении установки > числа фотонов - 7 секунд, т.е. данные хронически не > успевают считываться... > |------------- ВРЕМЯ ПОСЫЛКИ ДАННЫХ------- > |------- ВРЕМЯ СЧИТЫВАНИЯ------
1. Если время считывания меньше (!), то наоборот все будет успевать считываться.
2. Точно нет путаницы со считыванием и обработкой ?
Что-то мне кажется, что комп не может ТАК долго писать из порта в память, что не успеет поглотить все приходящие данные.
Если есть путаница по 2му пункту, то один срид будет писать в буфер, а другой из него читать и обрабатывать.
Если же он реально неуспевает ЧИТАТЬ из порта и ПИСАТЬ в память (без обработки), то никакая мультизадачность не поможет (но такая ситуация, имо, из разряда фантастики).
|
|
Немного работавший с портами и проч... 26.11.01 22:49
Автор: Chingachguk <Chingachguk> Статус: Member
|
> Так вот чел поставил мне задачу: как используя > многозадачность считать > необходимо положим 10 секунд, а для считывания в одном > положении установки > числа фотонов - 7 секунд, т.е. данные хронически не > успевают считываться... > |------------- ВРЕМЯ ПОСЫЛКИ ДАННЫХ------- > |------- ВРЕМЯ СЧИТЫВАНИЯ------
Простой пример. Пусть чтение из порта делается так:
@Начало цикла:
Ждем там чего -то из порта xxxx в каком-нить бите.
Дождались или тайм-аут.
Читаем из порта данные.
Сохраняем их.
repeat until (данные не собраны) goto @Начало цикла.
Спрашивается: все ли время проца тратиться на чтение
из порта ?
Ответ: естессно, нет. Чтение из портов - одна из самых тормознутых
вещей в компе ;)))
В это время прерывания там бегают (аж 18 раз / сек).
Винда там по таймеру куда-еще переключается.
Получается примерно вот что:
|------------------------------------------------|------------------------------------------- Цикл ожидания Считывание
<------------------------------- Около 10-1000 мкс --------------------------->
А теперь вспомни, скока проц успеет сделать тактов за
это безумно огромное для него время в ~500мкс ?!
|
|
[C++] Кто здесь cильный в мультизадачности ? 26.11.01 21:19
Автор: kabanchik Статус: Незарегистрированный пользователь
|
> Так вот чел поставил мне задачу: как используя > многозадачность считать > данные в том случае, если время считывания меньше времени > измерения- > это по-видимому нужно понимать так: для заправки единичных > данных в комп > необходимо положим 10 секунд, а для считывания в одном > положении установки > числа фотонов - 7 секунд, т.е. данные хронически не > успевают считываться...
Odin iz vozmozhnyx reshenij, ili prosto variantov :
zapusti paru potokov kotorye budut schityvat' dannye.
dopustim :
1) pomimo glavnogo potoka, ty sozdal 2 potoka thread_1 & thread_2
2) U tebya est 1 static DataBuffer peremennaya (ili chto to v etom rode) - xranilishe dannyx.
3) I-yj potok schityvaet dannye i tratit na eto 7 sec.
4) kak tol'ko I-yj potok schital dannye, II-oj potok nachinaet schityvat' ostatok dannyx
5) dannye iz Iogo potoka zapisyvayutsya v DataBuffer
6) Dannye iz vtorogo potok a zapisyvajutsya v DataBuffer.
7) povotrit' vse s punkta (3).
Esli ty znaesh' nachalo i konec dannyx postupajush' s vashego mudrenogo ustrojstva, to
1) Dostatochno sozdat' odin potok
2) on postojanno sidit na "listen", t.e. postoyanno vrashaetsya v cikle
3) kak tol'ko dannye postupili, on schityvaet ego i zapisyvaet, pri etom on znaet nachalo i konec dannyx, takim obrazom ty poluchaesh' 1 DataBuffer dlya kazhdogo postuplenia dannyx.
Odnim slovom, esli konechno ya pravil'no ponyal zadachu, tebe nado razobrat'sya s vozmozhnostyami synchronizaciiPORTAcherez kotoryj dannye zagonyajutsya v comp. Navernyaka driver porta obespechivaet Buffering, v takom sluchaet tebe nado dumat' tol'ko o tom kak synchronizirovat' potok. Tak chto tut skoree vsego ne mulitzadachnost', a multipotochnost' :-)))
ne dumaju chto eto uzh ochen' cherez chur slozhno, prosto nado nemnogo pofantazirovat' i poeksperementirovat' :-)))
udachi.
|
| |
[C++] Спасибо друзья! 26.11.01 23:13
Автор: КоЛЯн Статус: Незарегистрированный пользователь
|
Спасибо мужики!
По моему, kabanchik ближе подошел к сути с многопоточностью, я и сам , честно говоря , склонялся к такому же результату - посмотрим, куда меня с таким объяснением пошлют...
Спасибо и "последнему из могикан" - твое решение на сто процентов совпадает с моим первоначальным, которое я через 5 минут после вникания в суть показал 'шефу'- ну тот меня и пошел гнать (вот зараза) по много***чности- не нравится ентому субъекту видите-ли паскаль+асм - давай ему ооп. Он бы меня еще за яву вебстарт посадил - у нас сейчас последний писк - работы предлагают от 400 у.е. до непреличия ...
|
|
|