QNetworkAccessManager из ThreadPool - PullRequest
4 голосов
/ 06 мая 2011

Очень фундаментальный вопрос.В документации упоминается, что все методы в QNetworkAccessManager являются реентерабельными.Если да, допустимо ли выполнение метода get() в QRunnable без блокировок?Мой код будет выглядеть примерно так:

class MyClass: public QRunnable
{
    void run()
    {
        ...
        QNetworkAccessManager nam;
        QNetworkReply* reply =  name.get(request)    // No Read-write lock.
        ...
    }
};

Ответы [ 2 ]

3 голосов
/ 06 мая 2011

От документации Qt :

[...] класс называется реентерабельным , если его функции-члены могут [одновременно] быть безопасно вызывается из нескольких потоков, если каждый поток использует другой экземпляр класс.

Поскольку вы каждый раз используете другой экземпляр (тот, который вы создаете в стеке в run()), вы в безопасности.

0 голосов
/ 08 мая 2011

В качестве примечания к этому, если вы просто хотите, чтобы запрос GET был асинхронным, QNetworkAccessManager уже асинхронен (об этом говорится в документации).

...