首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >取消QtConcurent计算

取消QtConcurent计算
EN

Stack Overflow用户
提问于 2014-01-22 07:50:13
回答 2查看 176关注 0票数 0

我想在事件中取消QtConcurent::map计算。

这是我的测试代码(计算由一个无限循环表示):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Test : public QObject
{
    Q_OBJECT

public:
    Test(QObject *parent=0) : QObject(parent){}

    void test()
    {
        qDebug() << tr("thread:") <<  QThread::currentThread();

        //computation
        while(true);
    }
};

我有一份测试清单,我有:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//QFuture<void> m_concurentResult;
m_concurentResult = QtConcurrent::map(m_collection, &Test::test);
//That's Ok, I have the two outputs :
//  QThread(0x4e21f8, name = "Thread (pooled)")
//  QThread(0x4e21b8, name = "Thread (pooled)")

目标是当用户单击一个按钮时取消所有的计算。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void Widget::on_pushButton_clicked()
{
    m_concurentResult.cancel();
    m_concurentResult.waitForFinished();
}

但是当我点击这个按钮时,UI就被冻结了,什么也没做。谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-22 08:14:09

正如Peppe所说,QTConcurrent只会取消进一步的处理(如果您对序列进行映射或筛选)。不能中断单个项目。

这是因为线程一般不能被取消或中断。

在C++中,您需要自己管理。(关于扩展C++,可以通过将异常推送到线程中来中断/取消线程,但细节太复杂,无法进入标准。)

对于某些运行VM (Java,Python)的语言来说,当线程执行Java/Python代码时是可行的,而当锁定在内核/本机操作时则不行。

所以,while(true)应该是while(!m_interrupted)

票数 0
EN

Stack Overflow用户

发布于 2014-01-22 08:03:40

除了我会检查cancel是否真的做了一些事情(也就是说,如果它没有实现,我就不会感到惊讶),您还忽略了它的要点:它没有取消当前正在运行的任务,但是它阻止了为该计算计划更多的任务。

例如,如果你在10项上运行一张地图(1 .),并且正在处理项目1和2,并且调用cancel,正在对1和2进行的计算将完成;可能不会处理更多的项(但在这方面您得不到任何保证)。

问题是,一般来说,你不能轻易取消一个线程。例如,Qt不支持QThreads。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21287595

复制
相关文章
如何取消计算机用户名,Win10如何取消登录界面显示用户名?「建议收藏」
Win10如何取消登录界面显示用户名?求之不得,梦寐思服。得到之后,不过尔尔!不知道您为什么求Win10取消登录界面显示用户名的操作方法,个人感觉,结果很令人不习惯。还不如改成直接登陆系统呢!既然搜索
全栈程序员站长
2022/11/10
1.8K0
如何取消计算机用户名,Win10如何取消登录界面显示用户名?「建议收藏」
vim/vi 怎么取消高亮 或 取消选中状态
在Vi里面如果要搜索某个关键字,只要在命令状态下键入/xxx就可以了,比如,我要搜索port的位置,我就键入: /port 然后回车,一个文件中,所有出现这个字样的地方都会被高亮显示。按n键,就可以自动把光标跳到下一个。如下图所示:
黑泽君
2018/12/06
8.8K1
axios取消请求
在使用Axios发送请求时,有时可能需要取消请求,特别是在用户需要中断请求或离开当前页面时。Axios提供了取消请求的功能,以便有效地管理和处理请求的取消操作。
堕落飞鸟
2023/05/19
2.5K0
如何取消网站备案 取消网站备案的流程
当网站经营了一段时间以后,网站的经营者不想使用网站,想要将网站关停,而网站关停后需要取消网站备案,以此避免后续的相关问题。然而大多数的站主在关闭网站后,并不知道如何取消网站备案?那么接下来就给大家介绍一下网站关停后如何取消备案的方法。
用户8715145
2021/10/08
29.4K0
AJAX取消请求
在进行 AJAX(Asynchronous JavaScript and XML)请求时,有时候我们需要取消正在进行的请求。取消请求可以帮助我们提高用户体验,并减少不必要的网络流量和服务器负载。
堕落飞鸟
2023/05/19
1.9K0
axios 取消请求
官方文档:http://www.axios-js.com/zh-cn/docs/#%E5%8F%96%E6%B6%88
小鑫
2022/04/24
1.6K0
取消延时功能[通俗易懂]
大家好,又见面了,我是全栈君。 - (void) networkReachabilityDidUpdate:(NetworkReachability*)reachability { [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(reachabilityChanged) object:nil]; [self performSelector:@selector(reachabi
全栈程序员站长
2022/01/18
3.3K0
取消css事件
auto 与pointer-events属性未指定时的表现效果相同,对于SVG内容,该值与visiblePainted效果相同 none (一般会用到它,其他属性值很小使用) 元素永远不会成为鼠标事件的target。但是,当其后代元素的pointer-events属性指定其他值时,鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶段触发父元素的事件侦听器。 visiblePainted 只适用于SVG。元素只有在以下情况才会成为鼠标事件的目标: visibility属性值为visible,且鼠标指针在元素内部,且fill属性指定了none之外的值 visibility属性值为visible,鼠标指针在元素边界上,且stroke属性指定了none之外的值 visibleFill 只适用于SVG。只有在元素visibility属性值为visible,且鼠标指针在元素内部时,元素才会成为鼠标事件的目标,fill属性的值不影响事件处理。 visibleStroke 只适用于SVG。只有在元素visibility属性值为visible,且鼠标指针在元素边界时,元素才会成为鼠标事件的目标,stroke属性的值不影响事件处理。 visible 只适用于SVG。只有在元素visibility属性值为visible,且鼠标指针在元素内部或边界时,元素才会成为鼠标事件的目标,fill和stroke属性的值不影响事件处理。 painted 只适用于SVG。元素只有在以下情况才会成为鼠标事件的目标: 鼠标指针在元素内部,且fill属性指定了none之外的值 鼠标指针在元素边界上,且stroke属性指定了none之外的值 visibility属性的值不影响事件处理。 fill 只适用于SVG。只有鼠标指针在元素内部时,元素才会成为鼠标事件的目标,fill和visibility属性的值不影响事件处理。 stroke 只适用于SVG。只有鼠标指针在元素边界上时,元素才会成为鼠标事件的目标,stroke和visibility属性的值不影响事件处理。 all 只适用于SVG。只有鼠标指针在元素内部或边界时,元素才会成为鼠标事件的目标,fill、stroke和visibility属性的值不影响事件处理。 示例
用户6379025
2022/12/26
1.5K0
协程中的取消和异常 | 取消操作详解
在日常的开发中,我们都知道应该避免不必要的任务处理来节省设备的内存空间和电量的使用——这一原则在协程中同样适用。您需要控制好协程的生命周期,在不需要使用的时候将它取消,这也是结构化并发所倡导的,继续阅读本文来了解有关协程取消的来龙去脉。
Android 开发者
2022/09/23
2.1K0
协程中的取消和异常 | 取消操作详解
git 取消跟踪
这样就可以了,如果后面跟的是目录就加上个 -r 就行了 (这个操作不会删除这个文件)
潇洒
2019/07/03
9490
git取消追踪
决定一个人的一生,以及整个命运的,只是一瞬之间。——歌德 我们经常在使用git协作开发中遇到这样一种情况 一些目录(如编译后生成的目录)里的文件即便添加到了.gitignore文件里 仍然在我们提交代码时会带上去 这样就搞得冲突不断,需要去解决一些本可以避免的冲突 这是因为我们之前在git曾经提交过这个目录,git自动为我们追踪了这个目录 我们使用以下命令取消追踪,再清除我们add进缓存区的文件即可 git rm --cached [路径]
阿超
2022/08/16
7860
git取消文件跟踪
在使用git的时候,有些文件是不需要上传的,所以就可以修改   .gitignore 
lin_zone
2018/08/15
1.3K0
git取消文件跟踪
eclipse取消窗口置顶
@eclipse 不知道怎么搞的,窗口变成了置顶状态,查了一下,找到了快捷的办法。ctrl+alt+esc组合键就可以
软件小生活
2021/08/16
1.8K0
eclipse取消窗口置顶
android定时器取消,Android定时器崩溃取消
我有一个定时器运行,然后熄灭,并做了一些事情,定时器启动罚款。Android定时器崩溃取消
全栈程序员站长
2022/09/15
1.2K0
[1115]idea怎么快速取消打的所有断点或取消多个断点
在项目中选择调试执行 点击红色箭头所指向的符号 点击后就可以看到你打过的所有断点 对你想取消的断点位置去掉对勾就可以了 最后点击Done就解决了
周小董
2022/04/13
5.1K1
[1115]idea怎么快速取消打的所有断点或取消多个断点
java取消线程实例
调用interrupt并不意味着立即停止目标线程正在进行的工作,而只是传递了请求中断的消息。对中断操作的正确理解是:它并不会真正地中断一个正在运行的线程,而只是发出中断请求,然后由线程在下一个合适的时刻中断自己。
code4it
2018/09/17
4390
ztree取消节点操作
但是在Ztree的组件里面,我们看到的勾选框并不是checkbox完成,而是使用了图片精灵,选中和未选中的状态里面是一张背景图片里面不同的定位~
王小婷
2019/11/27
1.1K0
word自动编号取消
输入5后写完这一行按回车直接在下一行出现6.,贼8啦烦,还自动应用,找了一下解决办法
2020/10/23
1.4K0
word自动编号取消
OpenStack取消端口策略
取消某个端口限速 openstack port unset --qos-policy d5f8b517-af9d-4ba6-8424-be8f7a48dbf6
院长技术
2020/06/13
4830
如何取消 Fetch 请求
JavaScript 的 promise一直是该语言的一大胜利——它们引发了异步编程的革命,极大地改善了 Web 性能。原生 promise 的一个缺点是,到目前为止,还没有可以取消 fetch 的真正方法。JavaScript 规范中添加了新的 AbortController,允许开发人员使用信号中止一个或多个 fetch 调用。
疯狂的技术宅
2020/03/26
2.4K0
如何取消 Fetch 请求

相似问题

dask,如何取消计算?

10

如何取消Spark计算

12

PowerBi:计算日均取消订单

10

尽早取消使用线程的计算

13

停止/酸洗/取消酸洗/恢复计算

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文