Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
6 / 5 / 1
Регистрация: 29.12.2014
Сообщений: 177

Критический участок кода

18.10.2019, 14:21. Показов 1241. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, есть участок кода выполняющий манипуляции с параллельным портом и очень хотелось бы что бы во время выполнения этого участка кода он не прерывался всякими сборщиками windows и т д. Какие есть способы этого достигнуть по мимо повышения приоритета потока ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2019, 14:21
Ответы с готовыми решениями:

Участок B кода выполняется позже, чем участок A кода, но почему-то B влияет на работоспособность A! Почему?
Друзья! То есть суть такая, создаю объект и в конструктор передаю имя процесса и хэндл снимка системы. А в конструкторе начинается...

Объясните участок кода
Такой вопрос, ребят, что означает данная часть кода for(start_v=1;start_v<=n;start_v++) { rez=new int ; for...

Объясните пожалуйста участок кода
Узнал что это ассоциативный массив for (map<std::string,int>::iterator p = count.begin(); p != count.end(); p++) cout <<...

5
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.10.2019, 14:23
Цитата Сообщение от Leitto Посмотреть сообщение
Какие есть способы этого достигнуть по мимо повышения приоритета потока ?
других способов нет.
0
6 / 5 / 1
Регистрация: 29.12.2014
Сообщений: 177
18.10.2019, 14:27  [ТС]
hoggy, Мне как то так же сказали что достичь точных задержек в микросекундах невозможно под windows, а оказалось QueryPerformanceCounter замечательно с этим справляется.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.10.2019, 15:28
Цитата Сообщение от Leitto Посмотреть сообщение
Мне как то так же сказали что достичь точных задержек в микросекундах невозможно под windows
правильно сказали.

Цитата Сообщение от Leitto Посмотреть сообщение
а оказалось QueryPerformanceCounter замечательно с этим справляется.
нет, не замечательно.

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

ты конечно можешь возразить: "а у меня же дома работает"
у тебя дома это может сработать если: *тут 100500 разных факторов*
ключевой момент: нагрузка на систему.

если ты у себя дома запустишь софтинку под нагрузкой,
(например, 20 одновременно активных процессов),
таймер - это будет первое, что откажет.
просто потому, что процессор не резиновый.
если в системе 20 активных процессов,
а у процессора всего 2 ядра,
то лаги по квантам времени процессора неизбежны.

для наглядности, сделай функцию sleep,
которая будет усыплять процесс на миллисекундное время,
засекай время, которое процесс по факту проспал,
и время, которое он в теории должен был поспать.

если реальное время отличается от идеального больше чем на 60 миллисекунд (не микро, милли, Карл!),
тогда будем считать, что тест провалился.
далее запусти сразу несколько штук экземпляров тестовых приложений.
0
фрилансер
 Аватар для Алексей1153
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,096
18.10.2019, 15:53
Leitto, если прям на самом деле всё так критично, придётся делать железяку, работающую с портом снаружи. А с железякой же комп пусть общается как вздумается
1
6 / 5 / 1
Регистрация: 29.12.2014
Сообщений: 177
18.10.2019, 17:28  [ТС]
Алексей1153, Естественно это самый правильный подход и железяку сделать намного проще и проблем меньше.

Добавлено через 3 минуты
hoggy, И тут вы конечно же правы однако есть такая вещь как станки ЧПУ и они многие работают на LPT порту
Самый яркий пример это наверное программа mach3 они указали минимальную конфигурацию и о том что рекомендуется держать на таком компе только одну программу (mach3) прошу не придираться к тому что у винды куча своих процессов и т д.
Однако у них импульсы достаточно стабильные в прочем я и на свои особо не жалуюсь. Но мне захотелось чуть расширить их функционал. Написания драйвера весьма сложная тема а вот открыть своему приложению доступ к порту на прямую оказалось куда легче. А и функция sleep(0); на сколько мне известно там указан что это порядок милисекунды, но на деле эта функция создана для приостановления потока и совсем уже не является таймером. хотя в теории sleep(100) приостановит поток на 100 мили секунд. Но это все равно не таймер. А так же невозможно и возможно при определенных факторах это разные вещи.

Добавлено через 18 минут
Алексей1153, Я когда то слышал, что можно загрузить ЦП на практически на 100 проц (своей программой ) и выполнить необходимый участок кода.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2019, 17:28
Помогаю со студенческими работами здесь

Что делает этот участок кода?
Уважаемые программисты не могу разобраться что делает следующий кусочек кода, помогите пожалйста int ch; if( ( ch = getch() ) == 0...

Запустить участок кода в отдельном потоке
Мне нужно запустить определенный участок кода в отдельном потоке. Не запустить отдельную функцию, а именно участок кода. Просто мой код...

Есть в С++ способ выполнить участок кода, чтобы в этот момент все остальные потоки не работали?
Этот участок кода пишет в консоль лог ошибок, и запоминает текущее место курсора в консоле. Что происходит очень редко. Но между этими...

Пожалуйста объясните данный участок кода: typename std::vector<T>::iterator it), где его ещё можно применять?
//полный участок кода template &lt;typename T&gt; void quick_remove_at(std::vector&lt;T&gt; &amp;v, typename std::vector&lt;T&gt;::iterator it) {if (it...

с2079 и с2228 ошибки при компиляции ниже участок кода, с которым праблема и скрины ошибки
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ bool game = true; // КЛАССЫ class Me; class mob { public: void showHpMp()


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru