如何终止 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 中的休眠线程? 的相关文章

  • 如何在 C++ 中急于提交分配的内存?

    总体情况 带宽 CPU 使用率和 GPU 使用率都极其密集的应用程序需要每秒从一个 GPU 向另一个 GPU 传输约 10 15GB 的数据 它使用 DX11 API 来访问 GPU 因此上传到 GPU 只能在每次上传都需要映射的缓冲区中进
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • 如何在c#中指定时间后取消后台工作者

    如何在 C 中的指定时间后取消后台工作程序或取消无响应的后台工作程序 看看这个教程 http www albahari com threading part3 aspx http www albahari com threading par
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • 如何在线程创建和退出时调用函数?

    include
  • SLURM 节点、任务、核心和 CPU

    有人能够澄清这些东西到底是什么吗 据我所知 节点是集群内的计算点 本质上是一台计算机 任务是可以在单个节点或多个节点上执行的进程 核心基本上是指您希望在单个节点上分配多少 CPU 来执行分配给该 CPU 的任务 它是否正确 我混淆了什么吗
  • 使用 Matplotlib、PyQt 和 Threading 进行实时绘图导致 python 崩溃

    我一直在努力研究我的 Python 应用程序 但找不到任何答案 我有 PyQT GUI 应用程序 它使用 Matplotlib 小部件 GUI 启动一个新线程来处理 mpl 小部件的绘图 恐怕我现在通过从另一个线程访问 matplotlib
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • 为什么 Linux 原始套接字的 RX 环大小限制为 4GB?

    背景 我试图mmap 我的原始套接字的 RX 环形缓冲区64 bitLinux 应用程序 我的环由 4096 个块组成 每个块大小为 1MB 总共 4GB 请注意 每个 1MB 块中可以有许多帧 如果您好奇 请参阅此文档了解背景信息 htt
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • Hazelcast 分布式锁与 iMap

    我们目前使用 Hazelcast 3 1 5 我有一个简单的分布式锁定机制 应该可以跨多个 JVM 节点提供线程安全性 代码非常简单 private static HazelcastInstance hInst getHazelcastIn
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么 GetThreadTimes 返回

    我试图测量线程中花费的时间以用于进度报告目的 但我从 GetThreadTimes 系统调用中得到非常奇怪的结果 给出以下程序 在 VS 2013 中编译 针对 NET 4 5 using System using System Diagn
  • Interlocked.CompareExchange 的返回值是否有一些充分的理由

    The Interlocked CompareExchange 方法 docs https learn microsoft com en us dotnet api system threading interlocked comparee
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • 进度条没有进展

    我有一个正在更新 sqlserver 中的表的程序 我有一个表单 我想显示其进度 进度条正在递增 但没有显示 我需要为此使用后台工作者吗 我正在做什么的例子 public void updateTable string tableName
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的

随机推荐

  • 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 但无法