Помогите разобраться c передачей данных по сети!, создание двух потоков |
Здравствуйте, гость ( Вход | Регистрация )
Помогите разобраться c передачей данных по сети!, создание двух потоков |
PVGDRK |
24.9.2010, 15:35
Сообщение
#1
|
Студент Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: 0 |
Имеется программа, которая выполняет следующие действия,
динамически выделяется оперативная память для хранения очень большого массива данных далее эти данные по сети посылаются в другой компутер,,, При передаче данных по сети вся система начинает тормозить. программу невозможно закрыть до тех пор пока не закончится эта передача .,,, В общем посоветовали мне передачу данных организовать не в основном потоке... поскольку опыта программирования у меня почти нет - приходиться учиться по ходу дела буду всем признательна за помощь поможет ли избавиться от "тормозов" организация многопоточности - может есть какие то решения по-проще? Далее вопрос про сам принцип организации этой многопоточности в книге пишут,что нужно создать класс QThread и перезаписать в нем виртуальный метод run(), в котором должен быть реализован код, который будет исполняться в потоке
Суть вроде ясна, а вот как переменные и соединения сигнал-слот из базового класса перенести в этот метод run()? Может я не совсем корректно что то написала.т.к. не разбираюсь в данном вопросе.... сама программа передачи данных была написана другим человеком на С , мне лишь нужно было сделать для нее графический интерфейс в QT и кое чего добавть... помогите пожалуйста разобраться в данном вопросе |
|
|
PVGDRK |
30.9.2010, 15:35
Сообщение
#2
|
Студент Группа: Участник Сообщений: 49 Регистрация: 27.4.2010 Пользователь №: 1662 Спасибо сказали: 0 раз(а) Репутация: 0 |
Простите меня бестолковую, пожалуйста, помогите понять что к чему (я еще и сам С++ практически не знаю)
Написала так как Вы тут привели в примере - на место фразы "код,исполняемый в потоке" вставляю свой код с переменными из класса СMyClass - компилятор ругается пишет типа неизвестная переменная... Не могли бы Вы мне помочь понять что к чему? Что означает запись в Вашем примере,
строчка m_pDataKeeper->...служит для того, чтобы обратиться к какому либо элементу моего базового класса CMyClass? при вводе знака -> выскакивает список методов (не знаю как правильно назвать) но там максимум присутсвуют только описанные в классе CMyClass функции но не переменные... как работает эта конструкция if(m_pDataKeeper)? Каким образом из основного потока в классе CMyClass попадаем в это место? что происходит при написании строки m_pDataKeeper->....; и что пишется после знака ->? и еще я не совсем понимаю что где писать CMyClass - это мой класс, где хранятся мои переменные массивы данных и функции и используются сигналы и слоты. Этот класс является базовым и все что там выполняется - это выполняется в основном потоке? Я правильно понимаю? Этот класс имеет три проектных файла в которых я что то делала: CMyClass.ui - форма, куда помещаются различные виджеты CMyClass.h - где содержится описание класcа , прототипы функций и некотороые переменные и файл CMyClass.сср - где иммется конструктор класса, деструктор, и уже пишется сам код программы. Если создавать класс QThread - нужно ли создавать для его описания отдельные h и cpp файлы ? Почему приведенный Вами код нормально скомпилировался, если его разместить в файле CMyClass.cpp в самом конце (только если не писать свой код с исползованием переменных из класса CMyClass ) и почему то ничего не получилось, если я пыталась сделать для класса QThread свои h и cpp файлы в инклюдах вроде везде все что нужно написала ... Благодарю за помощь в познании |
|
|
Текстовая версия | Сейчас: 12.12.2024, 6:14 |