Реализация условных переменных для CRITICAL_SECTIONs для Winthreads для XP

Этот ответ добирался до долго, чтобы быть комментарием...

я полагаю этому, когда Ваша программа находится в Потоке. Сон (1000) и Вы открываете свое Соединение HyperTerminal, HyperTerminal берет на себя управление над последовательным портом. Когда Ваша программа тогда просыпается и пытающийся открыть последовательный порт, IOException брошен.

Модернизация Ваш метод и попытка обработать открытие порта по-другому.

РЕДАКТИРОВАНИЕ: Об этом необходимо перезагрузить компьютер, когда программа перестала работать...

, Что, вероятно, потому что Ваша программа isnВґt действительно закрытый, откройте свой taskmanager и посмотрите, можно ли найти сервис программы. Обязательно остановите все Ваши потоки прежде, чем выйти из Вашего приложения.

10
задан Logan Capaldo 2 August 2009 в 11:30
поделиться

1 ответ

Статьи, на которые вы ссылаетесь, были написаны моими коллегами как результат нашей работы над фреймворком ACE C ++ и его оболочками ОС. Как упоминалось в моей биографии, «Я не занимаюсь Windows», но я все еще активно работаю над ACE, и я просто взглянул, и оказалось, что реализация условной переменной для Win32 использует CRITICAL_SECTION (на при первоначальной проверке кажется, что здесь просто используется мьютекс, но если вы копнете глубже, вы обнаружите, что есть уровень ниже, в котором мьютекс определяется как CRITICAL_SECTION на платформах Windows).

FYI, in Чтобы убедиться, что код не был изменен для использования новых API Vista, проверенная мной база кода на самом деле является ответвлением от линии 1.5.

Предполагая, что вам нужен только C API для переменных условий, а не оболочки C ++ вокруг него, все это должно содержаться в одном наборе файлов: ace / OS_NS_Thread. {h, inl, cpp} Лицензия на ACE очень щедрая, а не GPL, поэтому вы может перенести код оттуда в частную базу кода, не опасаясь «заражения GPL».

Вы можете получить выпуски ACE по адресу http://download.dre.vanderbilt.edu/ ; проверенная мной версия - это коммерчески поддерживаемый выпуск, производный от ACE 5.5.2, поддерживаемый OCI и доступный для загрузки по адресу http://www.theaceorb.com/downloads/1.5a/index .html .

В интересах полного раскрытия информации, я давний пользователь / участник / сопровождающий ACE, некоторое время работал с этим исследовательским персоналом, а теперь я являюсь сотрудником OCI. Я не думаю, что это меняет полезность / применимость этого кода для вас,

6
ответ дан 4 December 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: