QNetworkAccessManager的资料同步问题

stereoMatching 2012-08-23 10:59:34
范例,大概解释一下我的问题

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把资料保护起来

请问还有其他的做法吗?加锁是一个可行的办法吗?我是第一次接触网路方面的
东西,不清楚应该怎么处理这种状况。

...全文
154 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,815

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧