C++0x线程中断

2023-12-27

根据 C++0x 最终草案,无法请求线程终止。也就是说,如果需要,我们需要实施一个 DIY 解决方案。

另一方面,boost::thread 提供了一种中断线程的机制。safe方式。

您认为最好的解决方案是什么?设计自己的协作“中断机制”还是采用本地化?


所有语言规范都表明该支持并未内置于该语言中。boost::thread::interrupt还需要线程函数的一些支持:

当被中断的线程下一次执行指定的中断点之一时(或者当前在执行一个中断点时被阻塞)

即,当线程函数不给调用者一个中断的机会时,你仍然被卡住。

我不确定你所说的“本地化”是什么意思 - 没有本地支持,除非你着迷boost:threads.

尽管如此,我还是会使用显式机制。无论如何,你必须考虑有足够的中断点,为什么不将它们明确化呢?根据我的经验,额外的代码通常是微不足道的,尽管您可能需要将一些等待从单对象更改为多对象,这(取决于您的库)可能看起来更难看。


人们还可以提出“不要使用控制流异常”,但与搞乱线程相比,这只是一个指导方针。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++0x线程中断 的相关文章

随机推荐

  • 如何从 SQL Server 数据库中获取以给定字符串开头的条目?

    我有一个数据库 其中有很多要在标签系统中使用的单词 我已经为自动完成框创建了必要的代码 但我不确定如何以最有效的方式从数据库中获取匹配的条目 我知道 LIKE 命令 但在我看来 它更像是 EQUAL 命令 我只得到与我输入的单词完全相同的单
  • 如何强制 Vaadin 客户端引擎重试向服务器发送请求?

    我目前正在试验 Vaadin Java 框架 我注意到客户端引擎不会重试向服务器发送请求 当移动互联网网络较弱或不一致时 最好继续重试发送请求而不是放弃 有谁知道如何在 Vaadin 实现这一目标 扩展 ApplicationConnect
  • 无法转换参数 C#/SQL Server

    出现错误 无法将参数值从字符串转换为 Int32 我为我的表单编写了该代码 最后运行该代码时出现错误 我试图改变一切 但任何交换都会给我同样的错误 My code const string sqlText INSERT INTO dbo b
  • 在GWT项目中继承外部java源

    我有一个在服务器端使用的 ENUM 我也希望能够在客户端 GWT 上使用这个枚举 这是结构 se mycompany core se mycompany core TheEnum lt this Enum se mycomapny web
  • 安装 Ionic2 应用程序所需的类型

    所以我正在研究 Ionice2 项目 这仍然是新项目 差不多一周了 并且我正在尝试按照下面的教程使用 PouchDB 进行 LocalStorage 教程 http gonehybrid com how to use pouchdb sql
  • UITableView、UIWebViews 和scrollsToTop 属性 = 麻烦

    我的应用程序有一个UITableView UITableView 有一个标题视图 它是UIWebView 默认情况下 滚动视图有其scrollsToTop属性设置为YES 这将使用户能够点击状态栏滚动到滚动视图的顶部 当一个视图中嵌入两个滚
  • 使用类类型向量进行前向声明 - 不允许指向不完整类类型的指针

    我有两节课 foo and bar foo h includes bar h 并包含一个std vector的指针bar对象 在运行时的某个时刻 bar必须访问这个指向其他指针的向量bar对象 所以 foo包含一个名为getBarObjec
  • 如何使用 System.Windows.Shapes.Path 绘制圆的一部分?

    我有一个 Silverlight 应用程序 通过实例化 System Windows Shapes Line 的实例然后将其添加到 MainCanvas Children 来在图片上绘制线条 我想同样添加一些圆段 如果我理解正确 我会想使用
  • PyTorch 自定义转发功能不适用于 DataParallel

    编辑 我尝试过 PyTorch 1 6 0 和 1 7 1 都给了我同样的错误 我有一个模型 允许用户轻松地在不同架构 A 和 B 之间切换 两种架构的前向函数也不同 所以我有以下模型类 附 我在这里只是用一个非常简单的例子来演示我的问题
  • 如何封装数据库访问?

    我正在 NET 中开发一个事务应用程序 希望获得一些有关如何正确封装数据库访问的信息 以便 我没有所有连接字符串 在那个地方 对同一个存储的多次调用 来自不同功能的过程 或者更糟糕的是 多个存储 程序不同 单列 我有兴趣知道使用像 NHib
  • python中的子串比较

    如果我有列表 PhoneDirectory 例如 John 009878788677 Jefrey 67654654645 Maria 8787677766 该函数可用于比较 List 中每个条目中是否存在子字符串 例如 Joh 我尝试过使
  • 卡夫卡生产者在第一条消息上速度很慢

    我在 NET 中有一个测试应用程序 它创建 kafka 生产者并使用 Confluence 客户端库向主题发送一些消息 由于某种原因 第一条消息的确认总是晚 1 秒到达 后续消息的确认几乎立即到达 这是正常行为还是我缺少某些配置 我想我尝试
  • git:更好的 git 恢复方法,无需额外恢复提交

    我在远程 本地分支中有一个提交 我想将该提交从历史记录中删除 并将其中一些放入自己的分支中 基本上 现在我有 D E F G master 而且我要 E G topic D master 这应该在我的本地和 只有一个 称为 origin 远
  • 具有 Http 触发功能的连续 Azure WebJob

    我目前有一个天蓝色的网络作业 每天执行从一个数据库到另一个数据库的同步 但也想添加手动触发同步的功能 我在webjob项目中设置的功能如下 public static void SyncData TimerTrigger 0 0 5 Run
  • 使用 Android 版 Facebook SDK 3.0 检索个人资料图片

    我遇到了适用于 Android 的 Facebook SDK 3 0 的问题 我想在不使用 ProfilePictureView 小部件的情况下获取我 和我的朋友 的个人资料图片 所以如果我使用 Graph Explorer 我会看到 Js
  • 无法序列化数据表。未设置数据表名称

    我需要将所有数据表导出到单独的 XML 文件 但如果有一个巨大的表 我无法一次导出所有行 因为会出现 System OutOfMemoryException 所以我尝试导出N行 但是 如果我在查询中使用分页语法 WriteXml 会引发异常
  • 在 Shiny App 中使用下载的/外部文件

    我正在尝试创建一个闪亮的应用程序 它使用谷歌电子表格中外部可用的信息 我将其下载到临时 csv 文件中 该应用程序在我的本地计算机上运行正常 但是当我尝试将其推送到闪亮应用程序io http shinyapps io应用程序失败 我尝试使用
  • Elixir 是否支持内省以显示可用功能?

    考虑这个片段凤凰编程 https pragprog com book phoenix programming phoenix defmodule Rumbl VideoController do use Rumbl Web controll
  • DirectX11 使用 PNG CreateWICTextureFromMemory

    我目前已经使用 CreateWICTextureFromFile 加载纹理 但是我想要对其进行更多控制 并且我想将图像以字节形式存储在资源加载器中 下面只是两组测试代码 它们返回两个单独的结果 我正在寻找对可能的解决方案的任何见解 ID3D
  • C++0x线程中断

    根据 C 0x 最终草案 无法请求线程终止 也就是说 如果需要 我们需要实施一个 DIY 解决方案 另一方面 boost thread 提供了一种中断线程的机制 safe方式 您认为最好的解决方案是什么 设计自己的协作 中断机制 还是采用本