crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Помогите разобраться c передачей данных по сети!, создание двух потоков
PVGDRK
  опции профиля:
сообщение 24.9.2010, 15:35
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

Спасибо сказали: 0 раз(а)




Репутация:   0  


Имеется программа, которая выполняет следующие действия,
динамически выделяется оперативная память для хранения очень большого массива данных далее эти данные по сети посылаются в другой компутер,,, При передаче данных по сети вся система начинает тормозить. программу невозможно закрыть до тех пор пока не закончится эта передача .,,,
В общем посоветовали мне передачу данных организовать не в основном потоке...
поскольку опыта программирования у меня почти нет - приходиться учиться по ходу дела буду всем признательна за помощь
поможет ли избавиться от "тормозов" организация многопоточности - может есть какие то решения по-проще?
Далее вопрос про сам принцип организации этой многопоточности
в книге пишут,что нужно создать класс QThread и перезаписать в нем виртуальный метод run(), в котором должен быть реализован код, который будет исполняться в потоке
class MyThread:public QThread
{
   public:
   void run()
    {
      код исполняемый в потоке
     }
}

Суть вроде ясна, а вот как переменные и соединения сигнал-слот из базового класса перенести в этот метод run()?
Может я не совсем корректно что то написала.т.к. не разбираюсь в данном вопросе.... сама программа передачи данных была написана другим человеком на С , мне лишь нужно было сделать для нее графический интерфейс в QT и кое чего добавть...
помогите пожалуйста разобраться в данном вопросе
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
PVGDRK
  опции профиля:
сообщение 30.9.2010, 15:35
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 27.4.2010
Пользователь №: 1662

Спасибо сказали: 0 раз(а)




Репутация:   0  


Простите меня бестолковую, пожалуйста, помогите понять что к чему (я еще и сам С++ практически не знаю) :unsure:
Написала так как Вы тут привели в примере - на место фразы "код,исполняемый в потоке" вставляю свой код с переменными из класса СMyClass - компилятор ругается пишет типа неизвестная переменная...
Не могли бы Вы мне помочь понять что к чему?
Что означает запись в Вашем примере,
MyThread(CMyClass* m_pDataKeeper=0):m_pDataKeeper(m_pDataKeeper)
   {
   }

 if(m_pDataKeeper)
        {
              m_pDataKeeper->....;  
         }

строчка m_pDataKeeper->...служит для того, чтобы обратиться к какому либо элементу моего базового класса CMyClass? при вводе знака -> выскакивает список методов (не знаю как правильно назвать) но там максимум присутсвуют только описанные в классе CMyClass функции но не переменные...
как работает эта конструкция if(m_pDataKeeper)? Каким образом из основного потока в классе CMyClass попадаем в это место?
что происходит при написании строки m_pDataKeeper->....; и что пишется после знака ->?

и еще я не совсем понимаю что где писать :unsure:

CMyClass - это мой класс, где хранятся мои переменные массивы данных и функции и используются сигналы и слоты. Этот класс является базовым и все что там выполняется - это выполняется в основном потоке? Я правильно понимаю?
Этот класс имеет три проектных файла в которых я что то делала:
CMyClass.ui - форма, куда помещаются различные виджеты
CMyClass.h - где содержится описание класcа , прототипы функций и некотороые переменные
и файл CMyClass.сср - где иммется конструктор класса, деструктор, и уже пишется сам код программы.
Если создавать класс QThread - нужно ли создавать для его описания отдельные h и cpp файлы ?
Почему приведенный Вами код нормально скомпилировался, если его разместить в файле CMyClass.cpp в самом конце (только если не писать свой код с исползованием переменных из класса CMyClass ) и почему то ничего не получилось, если я пыталась сделать для класса QThread свои h и cpp файлы в инклюдах вроде везде все что нужно написала ...
Благодарю за помощь в познании
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- PVGDRK   Помогите разобраться c передачей данных по сети!   24.9.2010, 15:35
- - Алексей1153   Цитата(PVGDRK @ 24.9.2010, 18:35) поможет...   24.9.2010, 18:34
- - PVGDRK   Спасибо за разъяснения. Я примерно так и предпола...   24.9.2010, 19:09
- - Алексей1153   Цитата(PVGDRK @ 24.9.2010, 22:09) А вот к...   24.9.2010, 19:21
- - PVGDRK   Это мне понятно, а как в этом классе QThread ис...   24.9.2010, 20:12
- - Алексей1153   PVGDRK, заведи в классе потока приватную член -пер...   24.9.2010, 20:19
- - PVGDRK   Ох, спасибо Про переменные почитаю - спасибо ,...   24.9.2010, 20:28
- - Алексей1153   PVGDRK, железки - обычно однопоточные, поэтому в н...   24.9.2010, 20:38
- - PVGDRK   Спасибо большое за разъяснения. В понедельник буд...   24.9.2010, 23:29
- - Алексей1153   а в выходные не будешь ? )   24.9.2010, 23:41
- - PVGDRK   Не , в выходные не получится - нет сети дома, да...   25.9.2010, 18:19
- - Гость_xls_*   Почитайте http://doc.qt.nokia.com/qq/qq27-responsi...   27.9.2010, 9:43
- - PVGDRK   Mercie beaucoup ( Большое спасибо ) Заодно и анг...   27.9.2010, 10:15
- - Алексей1153   Цитата(PVGDRK @ 27.9.2010, 13:15) Заодно ...   27.9.2010, 10:42
- - PVGDRK   Простите меня бестолковую, пожалуйста, помогите п...   30.9.2010, 15:35
- - Алексей1153   Цитата(PVGDRK @ 30.9.2010, 18:35) Простит...   1.10.2010, 6:27
- - PVGDRK   ЦитатаТочнее сказать: экземпляр класса CMyClass со...   1.10.2010, 11:59
- - Алексей1153   а где у тебя экземпляр MyThread создаётся ? по ме...   1.10.2010, 12:08
- - PVGDRK   Да к ui доступ есть псоле записи ui. выпадает сп...   1.10.2010, 12:36
- - Алексей1153   PVGDRK, так, стоп! "какие-то" - это ...   1.10.2010, 12:38
- - PVGDRK   Не, я так понимаю совсем не в конструкторе моег...   1.10.2010, 12:57
- - Алексей1153   PVGDRK, поиском я не нашёл, где у тебя создаётся э...   1.10.2010, 13:05
- - PVGDRK   Я так понимаю у меня вообще не создается экземпляр...   1.10.2010, 13:14
- - Алексей1153   Цитата(PVGDRK @ 1.10.2010, 16:14) Я так п...   1.10.2010, 13:22
- - PVGDRK   Если я все вырежу - то Вы мне тогда не сможете п...   1.10.2010, 13:34
- - Алексей1153   PVGDRK, ладно, щас набросаю схемку. Но! Срочно...   1.10.2010, 13:36
|- - Алексей1153   файл MyThread.h Раскрывающийся текст#pragma once #...   1.10.2010, 13:47
- - PVGDRK   Так я читаю - видно плохо понимаю что пишут......   1.10.2010, 13:39
- - PVGDRK   Безмерно Вам благодарна за подробный ответ Нечт...   1.10.2010, 14:08
- - PVGDRK   Помогите теперь, пожалуйста понять, как это рабо...   6.10.2010, 11:07
- - Алексей1153   Цитата(PVGDRK @ 6.10.2010, 14:07) thread....   6.10.2010, 11:18
- - PVGDRK   Да при нажатии на кнопку pushButton_5 в другом по...   6.10.2010, 12:05
- - Алексей1153   Цитата(PVGDRK @ 6.10.2010, 15:05) не знаю...   6.10.2010, 12:33
- - PVGDRK   так они у меня и так в cpp файле генератора опис...   6.10.2010, 15:08
- - Алексей1153   PVGDRK, "до конструктора" - это, я так п...   6.10.2010, 17:42
- - PVGDRK   Спасибо Вам добрый человек за терпение и внимание ...   7.10.2010, 8:18
- - Алексей1153   PVGDRK, я на самом деле злой, я ж из Обливиона )) ...   7.10.2010, 19:25


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.12.2024, 6:14