Глава 38 – Процессы и потоки

Процессы и потоки

Приобрести книгу можно на сайте ozon.ru и в электронном виде на Google Play:
Приобрести книгу о Qt и C++ на Ozon.ru Купить книгу о Qt и C++ на Goole Play

8 thoughts on “Глава 38 – Процессы и потоки

  1. В главе 38 “процессы и потоки” на странице 550, раздел “блокировка чтения/записи”

    в методе push() используется readWriteLock.lockForRead, хотя кажется логичнее было бы использовать lockForWrite

  2. Здравствуйте, Макс!
    На стр. 540 написано: “Можно так же получить и указатель на объект потока – для этого нужно вызвать статический метод QThread::currentThreadId()”. Правильно: метод QThread::currentThread().

    1. Здравствуйте, Вячеслав!
      Так как в main.cpp есть код класса MyThread с сигналом progress()
      class MyThread : public QThread {

      };
      нам необходимо запустить метаобъектный компилятор, для создания файла с мета информацией для этого класса.
      Было бы лучше класс конечно MyThread поместить в отдельный файл MyThread.h тогда этого делать бы не пришлось.
      По поводу #include “main.moc” можно в книге еще найти информацию, в примечании на странице 60, раздела “Метаобъектный компилятор MOC”.

  3. Здравствуйте, Макс!
    На стр. 553 в Листинге 38.12, если вместо строки “QFuture future = QtConcurrent::mapped(lst.begin, lst.end(), myToUpper);” написать: “QFuture future = QtConcurrent::mapped(lst, myToUpper);”, вывод такой же, как и в исходном варианте. Есть ли какие-то различия в этих вариантах и обязательно использовать в методе QtConcurrent::mapped() итераторы?

    1. Здравствуйте, Вячеслав!
      Да, в пространстве имен QtConcurent определана функция в которую можно передавать контейнеры. В этом случае будут использованны все элементы контейнера, тоесть результат будет эквивелентен передаче итераторов lst.begin() и lst.end(). В случае использования итераторов вы можете изменить колличество элементов контейнера, например на один элемент меньше QtConcurrent::mapped(lst.begin()), –(lst.end()), myToUpper);

Добавить комментарий