Помогите разобраться c передачей данных по сети!, создание двух потоков |
Здравствуйте, гость ( Вход | Регистрация )
Помогите разобраться c передачей данных по сети!, создание двух потоков |
PVGDRK |
24.9.2010, 15:35
Сообщение
#1
|
Студент Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: 0 |
Имеется программа, которая выполняет следующие действия,
динамически выделяется оперативная память для хранения очень большого массива данных далее эти данные по сети посылаются в другой компутер,,, При передаче данных по сети вся система начинает тормозить. программу невозможно закрыть до тех пор пока не закончится эта передача .,,, В общем посоветовали мне передачу данных организовать не в основном потоке... поскольку опыта программирования у меня почти нет - приходиться учиться по ходу дела буду всем признательна за помощь поможет ли избавиться от "тормозов" организация многопоточности - может есть какие то решения по-проще? Далее вопрос про сам принцип организации этой многопоточности в книге пишут,что нужно создать класс QThread и перезаписать в нем виртуальный метод run(), в котором должен быть реализован код, который будет исполняться в потоке
Суть вроде ясна, а вот как переменные и соединения сигнал-слот из базового класса перенести в этот метод run()? Может я не совсем корректно что то написала.т.к. не разбираюсь в данном вопросе.... сама программа передачи данных была написана другим человеком на С , мне лишь нужно было сделать для нее графический интерфейс в QT и кое чего добавть... помогите пожалуйста разобраться в данном вопросе |
|
|
Алексей1153 |
1.10.2010, 6:27
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Простите меня бестолковую для начала - прекрати себя бестолковой считать! вставляю свой код с переменными из класса СMyClass - компилятор ругается пишет типа неизвестная переменная... покажи код то Что означает запись в Вашем примере, MyThread(CMyClass* m_pDataKeeper=0):m_pDataKeeper(m_pDataKeeper) { } после двоеточия - список инициализаторов членов класса. В данном случае список состоит из одного элемента - m_pDataKeeper, в его конструктор передаётся параметр, переданный через кенструктор класса MyThread я просто назвал параметр так же, как и член класса, тут я был неправ в плане наглядности. Вот так будет понятнее:
строчка m_pDataKeeper->...служит для того, чтобы обратиться к какому либо элементу моего базового класса CMyClass? опкратор "->" позволяет обратиться к члену экземпляра (или функции) класса по указателю на экземпляр CMyClass - это мой класс, где хранятся мои переменные массивы данных и функции и используются сигналы и слоты. Этот класс является базовым и все что там выполняется - это выполняется в основном потоке? Я правильно понимаю? вообще-то, он не обязательно базовый (базовым классом называют класс-предок) Точнее сказать: экземпляр класса CMyClass создан в основном потоке. И по совместительству, как понимаю, этот класс у тебя - класс главного окна ? Сообщение отредактировал Алексей1153 - 1.10.2010, 6:28 |
|
|
Текстовая версия | Сейчас: 12.12.2024, 6:17 |