![]() |
|
|
![]()
|
|
| thesnidestone |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2005 Репутация: нет Всего: нет |
Доброго времени суток.
Есть программа, которая работает с com-портом: непрерывно считывает из него данные. Необходимо запустить несколько экземпляров программы на одном компьютере (4 и более). Проблема заключается в том, что если запускать более 2х экземпляров, например, 3, то первые два зависают (прогресс бар молчит, форма не реагирует на нажатия кнопок), при этом в диспетчере задач пишется, что "программа не отвечает", а 3ий экземпляр работает нормально. Тем не менее две "зависшие" программы продолжают считывание из порта и запись в файл. Подскажите, пожалуйста, что делать? Спасибо. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
не очень понял.
разве можно открыть ком-порт в нескольких приложениях? Или ты его каждый раз закрываешь? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| thesnidestone |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2005 Репутация: нет Всего: нет |
Не ... Все проще. На машине установлено 16 портов. Один экземпляр программы - один порт.
|
|||
|
||||
| threef |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 1 Всего: 10 |
Для такой цели лучше использовать не отдельные экземпляры задачи, а отдельные потоки. Один поток - один порт. Посмотри MutiThreading( AfxBeginThread и т.п.) . Еще тебе придется разбираться с критическими секциями и семафорами. А вообще-то без кода разобраться, чего у тебя там, сложновато...
|
|||
|
||||
| WERITAS |
|
|||
|
******** ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 2.5.2005 Где: Москва Репутация: нет Всего: 5 |
Ого! Воистину, лучше кома нет разъема -------------------- Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак" |
|||
|
||||
| Nuzur |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 4.7.2004 Репутация: 3 Всего: 5 |
Может ты просто не замечаеш как зависает 1-я программа, ведь если ты ее ставиш на "тупую" запись\чтение - именно етого и надо ожидать от программы.
Советую запускать потоки, и "форма", тобиш диалог, не тормозит. Это сообщение отредактировал(а) Nuzur - 21.11.2005, 18:04 -------------------- Never again... |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
так разницы то нетууууу. Винда все равно между потоками проц делит, а процесс - всего навсего один как минимум поток. Так что все должно работать нормально, а если не работает, то тогда надо знать откуда данные то "сосуться" там проблема скорее всего... а может быть просто прогрмамма открывает уже открытий первыми экземплярами программы порт и нету в коде обработчика нормального этого события, вот она стоит и стоит(может ведь и так быть). Хотя согласен с threef надо код смотреть. -------------------- я не гольфист - я хоккеист |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Разница есть. Если ты в одном и том же потоке и вычисления делаешь какие-то,и контролы на форме обновляешь - то это обновление будет весьма сильно подтормаживать. Если все жуткие вычисления вывести в отдельный поток, а интерфейсному потоку слать сообщения - все работает гораздо приятнее. Проверено на опыте. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Dreamer_0x01
Это ведь все равно никак не объясняет почему работает первые две программы, а последеющие - нет. Они абсолютно равнозначны для виндовс (FIFO однако...). А про что ты сказал, это правда конечно, но в данном то случае какая - то другая проблема... thesnidestone - ну че код то где??? долго нам гадать придется, что там у тебя... PS.: самому ведь уже интересно стало -------------------- я не гольфист - я хоккеист |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |