Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "Зависание" программы, запуск нескольких экземпляров программы 
:(
    Опции темы
thesnidestone
Дата 9.11.2005, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.4.2005

Репутация: нет
Всего: нет



Доброго времени суток.

Есть программа, которая работает с com-портом: непрерывно считывает из него данные. Необходимо запустить несколько экземпляров программы на одном компьютере (4 и более). Проблема заключается в том, что если запускать более 2х экземпляров, например, 3, то первые два зависают (прогресс бар молчит, форма не реагирует на нажатия кнопок), при этом в диспетчере задач пишется, что "программа не отвечает", а 3ий экземпляр работает нормально. Тем не менее две "зависшие" программы продолжают считывание из порта и запись в файл.

Подскажите, пожалуйста, что делать?

Спасибо.
PM MAIL   Вверх
Dreamer_0x01
Дата 9.11.2005, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



не очень понял.
разве можно открыть ком-порт в нескольких приложениях?

Или ты его каждый раз закрываешь?


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
thesnidestone
Дата 9.11.2005, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.4.2005

Репутация: нет
Всего: нет



Не ... Все проще. На машине установлено 16 портов. Один экземпляр программы - один порт.
PM MAIL   Вверх
threef
Дата 19.11.2005, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 1
Всего: 10



Для такой цели лучше использовать не отдельные экземпляры задачи, а отдельные потоки. Один поток - один порт. Посмотри MutiThreading( AfxBeginThread и т.п.) . Еще тебе придется разбираться с критическими секциями и семафорами. А вообще-то без кода разобраться, чего у тебя там, сложновато...
PM MAIL   Вверх
WERITAS
Дата 21.11.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Цитата
На машине установлено 16 портов.


Ого! Воистину, лучше кома нет разъема smile


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Nuzur
Дата 21.11.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



Может ты просто не замечаеш как зависает 1-я программа, ведь если ты ее ставиш на "тупую" запись\чтение - именно етого и надо ожидать от программы.
Советую запускать потоки, и "форма", тобиш диалог, не тормозит.

Это сообщение отредактировал(а) Nuzur - 21.11.2005, 18:04


--------------------
Never again...
PM MAIL   Вверх
takedo
Дата 28.11.2005, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: нет
Всего: 3



Цитата
Советую запускать потоки, и "форма", тобиш диалог, не тормозит.

так разницы то нетууууу. Винда все равно между потоками проц делит, а процесс - всего навсего один как минимум поток. Так что все должно работать нормально, а если не работает, то тогда надо знать откуда данные то "сосуться" там проблема скорее всего...
а может быть просто прогрмамма открывает уже открытий первыми экземплярами программы порт и нету в коде обработчика нормального этого события, вот она стоит и стоит(может ведь и так быть).
Хотя согласен с threef надо код смотреть.


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Dreamer_0x01
Дата 28.11.2005, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



Цитата(takedo @ 28.11.2005, 14:42)
так разницы то нетууууу. Винда все равно между потоками проц делит, а процесс - всего навсего один как минимум поток.

Разница есть. Если ты в одном и том же потоке и вычисления делаешь какие-то,и контролы на форме обновляешь - то это обновление будет весьма сильно подтормаживать. Если все жуткие вычисления вывести в отдельный поток, а интерфейсному потоку слать сообщения - все работает гораздо приятнее. Проверено на опыте.



--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
takedo
Дата 29.11.2005, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: нет
Всего: 3



Dreamer_0x01
Это ведь все равно никак не объясняет почему работает первые две программы, а последеющие - нет. Они абсолютно равнозначны для виндовс (FIFO однако...). А про что ты сказал, это правда конечно, но в данном то случае какая - то другая проблема...

thesnidestone - ну че код то где??? долго нам гадать придется, что там у тебя...
PS.: самому ведь уже интересно стало smile


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.