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

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

18.10.2019, 14:21. Показов 1235. Ответов 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
6455 / 5656 / 1129
Регистрация: 11.10.2019
Сообщений: 15,067
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru