example::example(QWidget *parent) : QWidget(parent)
{
button = new QPushButton(this);
connect(button, SIGNAL(clicked()), this, SLOT(request_update()) );
manager = QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(update(QNetworkReplay*)) );
}
.............................................
void example::request_update()
{
manager->get(QNetworkRequest(QUrl(/*some url*/)));
}
void example::update(QNetworkReplay* reply)
{
container.push_back(reply->readAll() ); //std::vector<QByteArray>
...........................
}
如果用户连续点击button该怎么办?此时有可能发生资源冲突(get为非同步的)
我觉得最简单的解法是在request_update()中发出讯号禁止用户点击button
如果要允许用户连续点击button,我目前所能想到的最简单的办法
就是把container封装起来,并用QMutex或QReadWriteLock把资料保护起来
请问还有其他的做法吗?加锁是一个可行的办法吗?我是第一次接触网路方面的
东西,不清楚应该怎么处理这种状况。