搁置线程是否是最佳选择?

2023-11-24

应用程序有一个辅助线程。该线程并不意味着一直运行,但主进程可以经常调用它。

所以,我的问题是,就 CPU 性能而言,什么是更优化的:在不使用线程时挂起线程,还是保持线程处于活动状态并使用 WaitForSingleObject 函数来等待来自主进程的信号?


就使用的 CPU 资源而言,两种解决方案是相同的 - 被挂起的线程和在 WaitForSingleObject 中等待未发出信号的对象的线程都根本得不到 CPU 周期。

也就是说,WaitForSingleObject 几乎总是首选的解决方案,因为使用它的代码会更加“自然”——更容易阅读,也更容易正确编写。挂起/恢复线程可能很危险,因为您需要非常小心,以确保您知道挂起线程的状态不会造成任何损害(想象一下挂起当前持有互斥锁的线程)。

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

搁置线程是否是最佳选择? 的相关文章

  • 将目录添加到path环境变量

    我的要求是将目录之一添加到path安装我的应用程序时 Windows 中的环境变量并将其删除path使用批处理文件卸载时的环境变量 在与此相关的 stackoverflow 答案之一中 建议将目录添加到路径环境变量中 setx path C
  • Python - 如何实现“可停止”线程?

    已经发布解决方案了here https stackoverflow com questions 323972 is there any way to kill a thread in python创建一个可停止的线程 但是 我在理解如何实施
  • 如何在python中获取硬盘驱动器的序列号

    我尝试使用wmi来获取硬盘的序列号 我所做的是这样的 启动ipython并使用以下方式获取序列号 import wmi c wmi WMI for x in c Win32 PhysicalMedia print x 结果是这样的 inst
  • SSL 错误 1409442E 使用 TIdHTTP 通过 HTTPS 下载文件 [重复]

    这个问题在这里已经有答案了 我正在使用德尔福10 3 3 下面的代码曾经有效 但现在尝试通过 HTTPS 下载文件时遇到错误 连接 SSL 错误错误 1409442E SSL 例程 SSL3 READ BYTES tlsv1 警报协议版本
  • 使用 Inno Setup 中格式化(部分粗体)的文本制作安装程序?

    有人看过 GOG com 游戏安装程序吗 如何制作像这样的欢迎文本字符串 包括单个标题中的路径和需要大小 其中部分内容加粗 以下是修改安装路径后如何更改字符串换行的示例 您可以使用TRichEditViewer http www jrsof
  • 虚拟内存澄清——大连续内存的分配

    我有一个应用程序 我必须在 Windows 上分配 使用运算符 new 相当大的内存空间 数百 MB 该应用程序是 32 位 我们现在不使用 64 位 即使在 64 位系统上也是如此 我启用了 LARGEADDRESSAWARE 链接器选项
  • SQLite同时读写

    我读过很多主题 但无法找到问题的答案 是否可以同时读写 我有后台线程更新一些数据 UI 需要存储在数据库中的一小部分数据 所以在UI线程中执行SELECT操作 但当更新正在进行时它会阻塞 结果 UI 冻结了几秒钟 有人在写入时成功从数据库读
  • WM_NEXTDLGCTL 可以与非对话框窗口一起使用吗?

    的文档WM NEXTDLGCTL https msdn microsoft com en us library windows desktop ms645432 aspx声明该消息将与对话框一起使用 发送到对话框过程以将键盘焦点设置到对话框
  • 当 datasnap 服务器中的用户授权失败时,是否可以更改响应代码?

    当用户授权失败时 是否可以更改 DataSnap Delphi XE3 服务器中的 HTTP 响应代码 目前正在回归HTTP 1 1 500 内部服务器错误 这可能发生在许多其他场景中 并且无助于描述问题 按照同样的想法 是否可以更改默认的
  • 添加到 .NET 任务栏中的右键单击应用程序菜单

    大多数应用程序只有 恢复 移动 调整大小 最小化 最大化和关闭 但是MS SQL提供了额外的选项 帮助 自定义视图 按照这些思路 是否可以添加到任务栏中应用程序的右键单击菜单 注 我是not指通知区域中时钟旁边的图标 这是一个更简单的ans
  • 检测您何时进入/退出 Xamarin.iOS 中的主线程

    Xamarin MonoTouch 有没有办法检测主线程中是否正在调用代码 我正在寻找类似于Java的东西EventQueue isEventDispatchThread 我发现 Swing 编程很方便assert时不时 或有时assert
  • 如何为信号量中等待的线程提供优先级?

    我使用信号量来限制访问函数的线程数量 我希望接下来要唤醒的线程应该由我将给出的某个优先级选择 而不是默认信号量唤醒它们的方式 我们怎样才能做到这一点 这是实现 class MyMathUtil2 implements Runnable do
  • 如何拥有程序执行时间的控制台?

    我正在尝试编写一个在控制台或 GUI 模式下工作的程序 具体取决于执行参数 我已经成功编写了以下示例代码 using System using System Collections Generic using System Linq usi
  • 在 python 2 或 python 3 中编写 csv 文件的便携式方法

    在我的 Windows 机器上 我通常在 python 2 中这样做来编写 csv 文件 import csv f open out csv wb cr csv writer f delimiter cr writerow a b c f
  • 线程池的 lambda 函数内的编译器错误变量“未捕获”

    我正在学习 C 中的多线程 并尝试设置线程池 但收到编译器错误 提示 错误 未捕获 mapperNodes 和 错误 未捕获 command 我读过一些关于使用 this 捕获 lambda 中的变量的内容 但到目前为止没有任何效果 如何在
  • 多线程环境中的析构函数?

    我想知道在这样的课堂上会发生什么 class MyClass private std vector
  • 为什么我的代码在编译用于分析 (-pg) 时在多线程下运行比在单线程下运行慢?

    我正在写一个光线追踪器 最近 我在程序中添加了线程 以利用 i5 四核上的附加内核 奇怪的是 应用程序的调试版本现在运行速度变慢 但优化后的构建运行速度比添加线程之前更快 我将 g pg 标志传递给 gcc 以进行调试构建 并将 O3 标志
  • Schedulers.io() 不返回主线程

    我正在使用 RxParse 来解析查询的异步负载 但是当我使用 subscribeOn Schedulers io 订阅我的可观察值时 我的 onCompleted 方法永远不会在主线程上调用 相反 我的 onCompleted 方法是在工
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta

随机推荐

  • 这个 YesodAuth 实例有什么问题?

    我刚刚从当前的 yesod 脚手架迁移到最新的yesod 1 6 0 yesod auth 1 6 2 instance YesodAuth App where type AuthId App UserId authenticate cre
  • 将单个元素添加到 IEnumerable 集合的最佳方法是什么?

    我很惊讶地发现似乎没有一种方法可以将单个元素添加到 IEnumerable 集合中 如何将单个元素添加到 IEnumerable 集合中 您无法真正向 IEnumerable 添加元素 因为它应该是只读的 你最好的选择是 return ne
  • 从java中删除hdfs文件夹

    在边缘节点上运行的 java 应用程序中 我需要删除 hdfs 文件夹 如果存在 我需要在运行在文件夹中输出的 MapReduce 作业 使用 Spark 之前执行此操作 我发现我可以使用该方法 org apache hadoop fs F
  • PHP数组在使用前需要声明吗?

    在编写最近的应用程序时 我不小心在声明数组之前开始填充数组 error reporting E ALL array value Test string 我使用 E ALL 错误报告并且没有抛出错误 它是否正确 如果是这样 声明数组值而不声明
  • MasterPage 是否知道正在显示哪个页面?

    当我使用 MasterPages 在网站上导航时 应用程序是否知道我所在的页面 如果是这样 它是否将其存储在我可以访问的对象中 我问的原因是这样我可以替换它 masterpage div ul ul div
  • 在 IDisposable 类层次结构中正确处理 ObjectDisposeException [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 当正确实现 IDisposable 时 大多数实现 包括框架指南 建议包括private bool disposed 成员以安全地允许多次调用Dispose Dispose bo
  • 如何编写自定义的removePunctuation()函数以更好地处理Unicode字符?

    在 tm 文本挖掘 R 包的源代码中 在文件中变换R 有removePunctuation 函数 当前定义为 function x preserve intra word dashes FALSE if preserve intra wor
  • 在Excel VBA中创建文件夹和子文件夹

    我有一个公司下拉菜单 其中由另一张纸上的列表填充 三列 公司 职位编号和零件号 创建工作后 我需要一个该公司的文件夹和一个该零件号的子文件夹 如果你沿着这条路走下去 它会看起来像 C 图像 公司名称 零件号 如果公司名称或零件号存在 请勿创
  • 为什么我的 pandas 数据框变成“无”类型?

    我看不出我的问题出在哪里 这段代码对于一个非常简单的例子来说工作正常 但是当我开始处理我的真实数据时 我遇到了问题 我基本上是从各种 csv 文件中提取某些数据 并尝试最终将它们合并到一个数据框中 相关代码如下 wavenames W1 W
  • WebRTC 实时音频流/广播 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在尝试了解 WebRTC 我需要能够通过网络浏览器捕获和流式传输实时音频 我只是很难找到我可以理解或最新的代码示例 如果有人可以帮助我首先使用 HTML5 WebRTC 在同
  • enctype='multipart/form-data' 是什么意思?

    什么是enctype multipart form data HTML 表单中的意思是什么 我们什么时候应该使用它 当您发出 POST 请求时 您必须以某种方式对构成请求正文的数据进行编码 HTML 表单提供三种编码方式 applicati
  • 将字符串时间转换为 UNIX 时间戳

    我有一个像这样的字符串2013 05 29T21 19 48Z 我想将其转换为自 1970 年 1 月 1 日 UNIX 纪元 以来的秒数 这样我就可以仅使用 4 个字节 或者可能是 5 个字节 以避免 2038 年问题 来保存它 我怎样才
  • ASP.NET MVC 4 拦截所有传入请求

    有没有办法让我抓住all向我的 ASP NET MVC 4 应用程序传入请求并在继续将请求发送到指定的控制器 操作之前运行一些代码 我需要使用现有服务运行一些自定义身份验证代码 为了正确执行此操作 我需要能够拦截来自所有客户端的所有传入请求
  • Xamarin 形成树视图

    I m trying to implement a treeview with nested data in Xamarin forms Something that looks like this 点击每个项目将打开可能的子项目列表 我在
  • 将 hexdigest() 的结果与字符串进行比较

    我有一个生成的 MD5 哈希值 我想将其与字符串中的另一个 MD5 哈希值进行比较 下面的陈述是错误的 尽管它们在打印时看起来是一样的并且应该是正确的 hashlib md5 foo hexdigest acbd18db4cc2f85ced
  • mongoose Model.findOne TypeError:对象没有方法“findOne”

    我有一个简单的 node js 代码 它使用 mongoose 它在保存时有效 但不检索 save 有效 但是 findOne 没有 mongoose require mongoose mongoose connect mongodb lo
  • CONSTRAINT 检查远程相关表中的值(通过连接等)

    我想添加一个约束来检查相关表中的值 我有3张桌子 CREATE TABLE somethink usr rel user id BIGINT NOT NULL stomethink id BIGINT NOT NULL CREATE TAB
  • IOS模拟器:模拟器用户要求新的图形质量:100

    当我在 iOS 9 0 模拟器中运行 iOS 应用程序时 我收到以下警告消息 警告消息 模拟器用户已请求新的图形质量 100 以前有人见过这个错误吗 你能解决它吗 你做了什么来修复它 如果您愿意 可以忽略此错误 这与你的代码无关 这只是苹果
  • 枚举类型布局与其基础类型兼容吗?

    我正在翻看n3690 即将出台的草案C 14标准 我在部分中看到7 2段落9 如果两个枚举类型具有相同的基础类型 则它们是布局兼容的 但是 我找不到任何说明枚举类型与其基础类型布局兼容的内容 对我来说 考虑到 底层类型 含义的合理语义 这似
  • 搁置线程是否是最佳选择?

    应用程序有一个辅助线程 该线程并不意味着一直运行 但主进程可以经常调用它 所以 我的问题是 就 CPU 性能而言 什么是更优化的 在不使用线程时挂起线程 还是保持线程处于活动状态并使用 WaitForSingleObject 函数来等待来自