如何终止 pthread 中的休眠线程?

2023-12-31

我有一个线程休眠很长时间,然后醒来做某事,然后再次休眠,如下所示:

while(some_condition)
{
    // do something
    sleep(1000);
}

我怎样才能让这个线程优雅而快速地退出?

我尝试使用pthread_cancel(),但无法取消休眠线程。 我也尝试过改变while循环的条件,但仍然需要很长时间才能退出。 我不想使用pthread_kill(),因为它可能会在线程工作时杀死它。

那么,有什么好的想法吗?


作为替代方案sleep,你可以使用pthread_cond_timedwait http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_cond_timedwait.html超时时间为 1000 毫秒。然后,当您想退出时,向条件变量发出信号。

这类似于在 C#/Java 中使用等待和通知执行此操作的方式。

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

如何终止 pthread 中的休眠线程? 的相关文章

  • 是否可以在 Python 中子类化 Lock() 对象?如果没有,还有其他方法来调试死锁吗?

    所以 我有一个多线程Python程序 它目前正遭受死锁 我打算通过子类化 threading Lock 对象来记录锁获取 import traceback class DebugLock threading Lock def acquire
  • 在 bash tee 中,正在将函数变量设置为本地函数,我该如何逃避这个问题?

    我一直坚持使用 bash scipt 它应该同时写入标准输出和文件 我正在使用函数和其中的一些变量 每当我尝试将函数重定向到文件并用 tee 在屏幕上打印时 我无法使用在函数中使用的变量 因此它们以某种方式变成本地变量 这是一个简单的例子
  • 如何在shell脚本中读取单个字符

    我想要类似的选项getche 如何从命令行读取单个字符输入 Using read命令我们可以做到吗 在巴什中 read可以做到 read n1 ans
  • 设置 display:block 后将焦点设置在输入元素上

    我有一个 HTML 内容如下 div class hiddenClass this implies display none span span div
  • 如何将域名附加到我的服务器? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个小问题 查看了这里和其他论坛 但找不到解决方案 我的网站位于 my domain com 网站位于共享主机上 在我的域名注册中 我添加了当我为
  • Boost 安装在我的 Ubuntu 上的什么位置?

    我从 Boost 网站下载 Boost 1 54 tar 然后按照此处 1 详细说明进行操作 特别是 我想将我的 boost 库安装在文件夹中 HOME BOOST 使用这个 bootstrap sh prefix HOME BOOST 但
  • 其他线程可以修改线程本地内存吗?

    假设我有以下声明 thread local std atomic
  • 从 Java 内部限制 CPU

    我在这个 和其他 论坛中看到了许多具有相同标题的问题 但似乎没有一个问题能完全解决我的问题 就是这个 我有一个 JVM 它占用了托管它的机器上的所有 CPU 我想限制它 但是我不能依赖任何限制工具 技术external到 Java 因为我无
  • 如何找到锁的所有者(监视器)?

    有没有办法发现哪个线程当前拥有锁 具体来说 我正在寻找一些代码来打印出阻止锁定的线程 我想尝试锁定给定的超时时间 然后报告哪个线程正在阻止锁定 不需要 只需编写代码 private int lockOwner private object
  • 使用 pythonw.exe 时 Python subprocess.call() 失败

    我有一些 Python 代码 当我使用 python exe 运行时可以正常工作 但如果我使用 pythonw exe 则失败 def runStuff commandLine outputFileName somefile txt out
  • 是否可以在 python shebang 中包含命令行选项?

    我的 python 脚本顶部有规范的 shebang usr bin env python 但是 当我运行脚本时 我仍然经常希望将未缓冲的输出导出到日志文件 因此我最终调用 python u myscript py gt myscript
  • 什么样的应用程序需要多线程?

    什么是一些具体的例子需要或不需要多线程的应用程序 但这样会更好吗 如果答案以每个帖子一个申请的形式最好 这样最适用的就会浮到顶部 没有硬性且快速的答案 但大多数时候 您不会看到工作流程 计算是连续的系统有任何优势 然而 如果问题可以分解为可
  • 如何在Linux中诊断Python进程占用CPU

    我的 python 进程在自动化脚本中的某个时刻开始在基于 Linux 的系统 Ubuntu 上占用 CPU 我正在尝试在 GDB 中调试这个问题 我对 GDB 还很陌生 是否有任何 GDB 命令可以提供有关哪个线程正在使用大部分 cpu
  • 如何一次运行多个后台线程任务?

    我正在尝试循环遍历包含 2016 年 10 月日期的 String 对象数组 这意味着 31 个 String 对象 2016 年 10 月 1 日 2016 年 10 月 31 日 对于每个对象 我想从数据库检索一些数据并附加返回值 也是
  • 如何在bash中使用kill SIGUSR2?

    我在linux中使用iptraf来监控网络流量 shell命令是 让iptraf在后台运行 iptraf s eth0 f B L traffic dat 如果我想得到结果 我必须先停止 iptraf 所以我使用 shell 命令 kill
  • 确保适配器的内容不会从后台线程修改,而仅从 UI 线程修改

    我有一个带有 EditText 名为 filtro 和 ListView 名为 list view 的活动 当用户插入文本时 适配器应该刷新 如果我多次更改文本 则会发生崩溃 然后显示消息 确保适配器的内容不是从后台线程修改 而是仅从 UI
  • 在 WPF 中处理第二个 UI 线程

    我有一个长时间运行的进程在我的 UI 线程上运行 我无法离开 UI 线程 相反 我尝试创建第二个具有等待动画的 UI 线程 这是我用来创建第二个 UI 线程的代码 Private busyThread As Thread Private w
  • SO_REUSEPORT 可以在 Unix 域套接字上使用吗?

    Linux 内核 gt 3 9 允许通过设置在内核负载平衡的进程之间共享套接字SO REUSEPORT http lwn net Articles 542629 http lwn net Articles 542629 这如何用于类型的套接
  • JavaFX 多线程 - 连接线程不会更新 UI

    我正在尝试创建一个加载程序对话框 用户可以在其中知道程序正在加载所请求的内容并且程序正在按预期运行 但正因为如此 我需要join 解析器线程和之前继续主线程 这使得对话框空白 解析器任务 java public class ParserTa
  • 如何从脚本编辑 /etc/sudoers?

    我需要编辑 etc sudoers从脚本中添加 删除白名单中的内容 假设我有一个可以处理普通文件的命令 我如何将其应用到 etc sudoers 我可以复制并修改它 然后有visudo用修改后的副本替换原始版本 通过提供我自己的脚本 EDI

随机推荐

  • Ruby 函数检查一个数字是否能被 5 整除并且是偶数

    def is even n remainder when divided by 2 n 2 if remainder when divided by 2 0 return true else return false end end def
  • 在 Flutter 中使用 iOS 行为时更改 ListView 反弹颜色

    当创建一个ListView 文档中的示例 https flutter io docs cookbook lists basic list 当使用带有 Flutter 的 iOS 模拟器滚动时 我们如何更改出现在列表顶部的反弹颜色 ListV
  • 如何使用 Cython 进行覆盖率分析

    我正在尝试使用一些 Cython 代码运行覆盖率分析pytest cov和工作服 io 我已经构建了启用跟踪的扩展模块 并借助以下链接运行分析 http docs cython org src tutorial profiling tuto
  • 如果远程仓库不可用,如何为 Spring Cloud Config 服务设置本地后备配置?

    我们计划在我们的服务中使用 Spring Cloud Config 我们最担心的是 当容器启动时 它依赖 github 始终可用 以便它可以拉取配置文件 如果 github 宕机 缓解该问题的最佳实践是什么 我正在考虑存储配置的本地文件夹作
  • 在单个 build.gradle 文件中多次调用同一任务

    我有一个自定义 Gradle 插件 它将从模板文件生成 Java 文件 我在不同位置有几个这样的模板文件 我需要 编译 所有这些文件以生成我需要的 Java 文件 获得文件后 我想将它们打包到 jar 中 我认为可以做到这一点的一种方法是从
  • 在 .NET 中打印 - 从毫米到像素的转换

    如何将用户输入从毫米转换为像素 以便将其打印在页面的正确位置 我使用以下代码 private void document PrintPage object sender PrintPageEventArgs e float dpiX e G
  • zip 函数帮助处理元组

    我希望有人能帮助我解决我遇到的问题 我有大量的元组 gt 500 如下所示 2 1 3 6 1 2 5 5 3 0 1 6 10 1 1 4 0 3 3 0 我的代码片段如下 sum1 A B C D creates a tuple of
  • get 返回 hazelcast 3.5 中超类 ArrayList 的值

    我在使用 hazelcast 3 5 时遇到序列化问题 当一个 hazelcast 客户端 Java 输入 class 的值时 public class MyType extends ArrayList
  • 使用 Firestore 和 Typescript 实现动态 Where 条件

    我正在尝试实现存储库模式火库Firebase 和打字稿 Code import firestore from firebase admin import ISearchCriteria from ISearchCriteria export
  • libgcrypt.lib 中未解析的外部符号

    如果我在 lib library 文件中发现未解析的外部符号 我必须做什么 如果我在 c 或 cpp 中发现无法解析的外部符号 我可以修复它 但是当我在 lib library 文件中发现未解析的外部符号时 我该如何解决这个问题 就我而言
  • @Input 是否提供双向绑定?

    我认为 Input的工作方式会直接给出一个大大的 不 对于这个问题 然而 今天我偶然发现了一些奇怪的行为 或者也许我一直对 Input 的想法是错误的 我做了一个堆栈闪电战 https stackblitz com edit angular
  • F# 是一种可用于 .net windows 开发的语言吗

    我一直听说过 F 微软现在有一个人在雷蒙德某处写博客和编码 你真的可以用 F 编写 GUI 代码吗 我很想看到一个例子 例如向表单添加按钮并订阅 onclick 事件 F 是否可以完全访问所有 Net 老实说 我很好奇 我知道我可以用谷歌搜
  • MySQL解释计划中“选择优化掉的表”的含义

    是什么意思Select tables optimized awayMySQL中的解释计划 explain select count comment count from wp posts id select type table type
  • 无法解析构造函数 ArrayAdapter

    无法在自定义对话框中使用 ArrayAdapter 这是我收到的错误 https i stack imgur com 3yGN5 png 您收到该错误是因为ArrayAdapter构造函数要求第一个参数是Context目的 由于您是从内部调
  • 未捕获的类型错误:Object.values 不是 JavaScript 函数

    我有一个简单的对象 如下所示 var countries Argentina 1 Canada 2 Egypt 1 我需要创建两个数组 第一个数组是对象中所有键的数组 我通过以下方式创建了这个数组 var labels Object key
  • matplotlib 中的复杂极坐标图

    我想创建一个类似于以下的极坐标图 我找不到如何在不同角度范围内添加两个不同函数的示例 我不需要中间的径向偏移 但可能会很好 任何指针 已知的例子都是超级的 它看起来就像其他绘图一样matplotlib 即如果你想绘制两条曲线 你可以调用pl
  • 使用 C# 将记录插入 MySQL 数据库

    我目前正在使用 C WPF 开发一个应用程序 我正在尝试将数据存储到 MySQL 数据库中 下面是我的代码 MySqlCommand cmd new MySqlCommand conn cmd CommandText INSERT INTO
  • 通过 UIToolBar 的 UIBarButtonItem 在 iOS13 上不显示

    我通过UIToolBar将UIBarButtonItem设置为iOS13上navigationItem的titleView 构建并运行后 UIBarButtonItem 未按预期显示 note UIBarButtonItem noteBut
  • swift 2 sprite-kit 中的多行标签?

    我需要能够在 swift 2 sprite kit 中为游戏制作多行标签 文本需要环绕而不是离开屏幕 波纹管是我所拥有的 但我不知道该怎么办 import Foundation import UIKit import SpriteKit c
  • 如何终止 pthread 中的休眠线程?

    我有一个线程休眠很长时间 然后醒来做某事 然后再次休眠 如下所示 while some condition do something sleep 1000 我怎样才能让这个线程优雅而快速地退出 我尝试使用pthread cancel 但无法