crossplatform.ru

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

> Ожидание чтения и сокращение загрузки процессора.
dasV
  опции профиля:
сообщение 13.3.2009, 17:47
Сообщение #1


Студент
*

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

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




Репутация:   0  


Добрый день уважаемые. Я новичок в qt да и в c++ поэтому бейте меня и посылайте на RTFM.


Есть Вот такой код

QString M_class::ReadSocket()
{
    QTime TimeOut;
    TimeOut.start();
    while(!socket.waitForReadyRead())
        {    
            QCoreApplication::processEvents();
            if(TimeOut.elapsed()>=6000)
            {
                return(0);
            }
        }
    return(socket.readAll());
}


Так вот он создает нагрузку на процессор, а если ожидание затягивается, то и вовсе становится неприятно что я такой вот пожиратель тактов.

Можно ли справить ситуацию?? Сразу оговорюсь что программа консольная и в ней нет Q_OBJECT с вызовом QTimer::timeout ()

Да еще вопрос, к месту ли тут QCoreApplication::processEvents()???

С уважением
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
dasV
  опции профиля:
сообщение 6.4.2009, 11:43
Сообщение #2


Студент
*

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

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




Репутация:   0  


Добрый день уважаемые, только что вернулся из анабиоза.

igor_bogomolov я сделал (точнее попытался сделать) как Вы и сказали через canReadLine() однако столкнулся с недопониманием (не докурил) вот какого момента (информацию о котором не смог найти).

Скажите если мы не можем прочитать строку, это может значить что мы прочитали все что нам прислали?
То есть нам надо определить, или мы действительно не можем прочитать строку (а значит, нам надо бы подождать) или второй вариант, нам уже все прислали и надо обрабатывать строки?

Вторая проблема вытекающая из первой, с которой столкнулся, это то, что на последнюю строку canReadLine() выдает false, хотя если вызывать принудительно ReadLine() выдает последнюю строку... не понятно так как если подождать, socketReadyRead() повторно не вызывается =(.

Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- dasV   Ожидание чтения и сокращение загрузки процессора.   13.3.2009, 17:47
- - kwisp   dasV, что мешает включить в конольную прогу Q_OBJ...   13.3.2009, 17:52
- - Litkevich Yuriy   dasV, цыклы лучше в отдельный поток помещать у них...   13.3.2009, 17:56
- - LE0N   virtual bool waitForReadyRead ( int msecs = 30000 ...   13.3.2009, 17:56
- - dasV   Хм, написал вот что QString Sms_class::R...   13.3.2009, 19:24
- - LE0N   QString QIODevice::errorString () const ? Кто долж...   13.3.2009, 19:51
|- - AD   Цитата(LE0N @ 13.3.2009, 19:51) QString Q...   27.3.2009, 9:48
- - Litkevich Yuriy   Цитата(dasV @ 13.3.2009, 22:24) if(tmp.is...   13.3.2009, 20:24
- - kwisp   Цитата(Litkevich Yuriy @ 13.3.2009, 17:56...   13.3.2009, 20:25
- - Litkevich Yuriy   Цитата(kwisp @ 13.3.2009, 23:24) должно п...   13.3.2009, 20:26
- - LE0N   Цитатапеременная tmp какого типа? Очевидно же - Q...   13.3.2009, 20:33
- - dasV   А я и не говорил что нельзя, мне просто неудобно, ...   13.3.2009, 22:16
- - kwisp   dasV, с этого надо было начинать. давай задачу по...   13.3.2009, 22:27
- - Litkevich Yuriy   Цитата(dasV @ 14.3.2009, 1:16) А в консол...   13.3.2009, 22:32
- - dasV   Задача такова, я должен послать на сервер запрос а...   14.3.2009, 20:01
- - kwisp   dasV, существует такой метод или "агрегат...   14.3.2009, 20:27
- - dasV   2_ kwisp Спасибо, буду думать, а это не оно ли слу...   14.3.2009, 20:54
- - kwisp   Цитата(dasV @ 14.3.2009, 20:54) а это не ...   15.3.2009, 9:16
- - dasV   Доброго времени суток уважаемые. Сделал как и сказ...   26.3.2009, 19:33
|- - igor_bogomolov   Может я уже немного не в тему и не вовремя, но я б...   26.3.2009, 23:51
- - igor_bogomolov   Дополнительно(конкретно по вопроссу) Цитата(dasV ...   27.3.2009, 0:44
|- - igor_bogomolov   И еще. Сигнал readyRead () испускается каждый раз,...   27.3.2009, 1:18
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 27.3.2009, 2:51) ...   27.3.2009, 1:45
- - igor_bogomolov   Litkevich Yuriy Спасибо. С раскрывающимся текстом ...   27.3.2009, 3:33
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 27.3.2009, 6:33) ...   27.3.2009, 4:27
- - LE0N   ЦитатаLEON, уважай собеседника и будь вежлив. Все ...   27.3.2009, 12:49
- - dasV   Всем спасибо за ответы. Сделал socket.flush (); од...   27.3.2009, 19:45
|- - BRE   Цитата(dasV @ 27.3.2009, 19:45) Хотел бы ...   27.3.2009, 20:27
- - LE0N   ЦитатаТак же подумал, что мол не все прочитали и п...   27.3.2009, 23:24
- - igor_bogomolov   Цитата(dasV @ 27.3.2009, 19:45) Хотел бы ...   28.3.2009, 1:29
- - LE0N   ЦитатаА когда тогда не рано? Если никуда не лездь,...   28.3.2009, 10:39
- - dasV   Добрый день уважаемые, только что вернулся из анаб...   6.4.2009, 11:43
- - igor_bogomolov   У вас хоть какой-то протокол общения с сервером ес...   6.4.2009, 12:19
- - dasV   Добрый день. Протокол общения обычный http, я зна...   6.4.2009, 12:44
|- - Sokoloff   Цитата(dasV @ 6.4.2009, 13:44) Добрый ден...   6.4.2009, 18:09
- - igor_bogomolov   Цитата(dasV @ 6.4.2009, 13:44) я знаю, ск...   6.4.2009, 12:57
- - dasV   Да я действительно не очень…ммм, не очень корректн...   6.4.2009, 13:25
- - Litkevich Yuriy   Цитата(dasV @ 6.4.2009, 17:25) Я к сожале...   6.4.2009, 13:29
|- - trdm   Цитата(Litkevich Yuriy @ 6.4.2009, 14:29)...   6.4.2009, 14:59
- - igor_bogomolov   Приложите еще хотябы код метода в котором вы считы...   6.4.2009, 15:53
- - dasV   То же самое, к сожалению, результат вывода примерн...   6.4.2009, 16:34
- - dasV   Похоже, что так оно и есть, после получения данных...   7.4.2009, 18:36


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


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




RSS Текстовая версия Сейчас: 1.12.2024, 22:47