Pthread:为什么人们费心使用 pthread_exit?

2023-11-21

据我了解,当您需要终止具有返回值的线程时, pthread_exit() 完全等于 return 。当人们可以使用一致的方式(即返回)来完成工作时,为什么 Pthread 定义这样一个重复的接口?


我想到的两个原因:pthread_exit

  1. 允许您从调用堆栈中的任何深度退出线程。

  2. 如果要调用主线程的 TLS 密钥的自由函数,则必须在主线程上调用。这里也是:“任何已被推送但尚未弹出的取消清理处理程序都会以与推送和执行相反的顺序弹出。在执行所有取消清理处理程序后,如果线程有任何线程特定的数据,将以未指定的顺序调用适当的析构函数...隐式调用线程退出当除首次调用 main() 的线程以外的线程从用于创建它的启动例程返回时,将创建 ()。函数的返回值充当线程的退出状态。”

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

Pthread:为什么人们费心使用 pthread_exit? 的相关文章

  • pthread_create函数中的第四个参数

    代码如下 int code pthread create d gt thread id attr QThreadPrivate start this which QThreadPrivate start是一个静态函数 那么 第四个参数有什么
  • 从命令为 pthread 引导 symfony2

    我正在尝试从 symfony 2 命令启动线程 protected function execute InputInterface input OutputInterface output parser this gt getContain
  • 对“pthread_cancel”的未定义引用

    我写了以下内容T与 一起上课pthread 当我使用 g lpthread 编译此类时 它工作正常 但是如果我从另一个类扩展这个类A并一起编译它会返回一个错误 对 pthread cancel 的未定义引用 Code class T pri
  • 在Linux中使用命令行检查单个线程优先级

    我可以通过转到 proc pidof task 并给出来查看应用程序中使用的线程数 猫的状态 有没有办法使用命令检查Linux中各个线程的优先级 Regards Learner 运行 ps m l 它将列出所有线程和特定 PID 的优先级
  • 每个进程的最大线程数 - sysconf(_SC_THREAD_THREADS_MAX) 失败

    我试图找到 UNIX 机器上每个进程的最大线程数 并编写下面的代码来使用 sysconf include
  • POSIX 线程何时取消不是立即的?

    POSIX 指定了两种线程取消类型 PTHREAD CANCEL ASYNCHRONOUS and PTHREAD CANCEL DEFERRED 通过设置pthread setcanceltype 3 确定何时pthread cancel
  • 使用 pthread_create 时出现 valgrind 内存泄漏错误

    我正在使用 pthread 库编写一个程序 当我使用命令运行程序时valgrind leak check full 我得到以下错误描述 11784 11784 HEAP SUMMARY 11784 in use at exit 4 952
  • 将工作分配给更多线程需要更多时间,为什么?

    我有一个小的 C 程序可以计算pi用一个蒙特卡洛 http en wikipedia org wiki Monte Carlo method Introduction 模拟基本上只是测试随机点 x y 是否在圆内部或外部 近似pi我必须使用
  • 关于僵尸进程和线程的问题

    自从我阅读一些有关进程和线程的新主题以来 我脑海中浮现出这些问题 如果有人能帮助我 我会很高兴 1 如果一个线程被标记为不可取消 然后该进程在临界区内被终止 会发生什么 2 我们的程序是否有操作系统已知的主线程 我的意思是操作系统是否给予程
  • C库函数获取活动线程数

    我正在用 C 语言开发一个多线程 Unix 应用程序 有没有一种简单的方法来获取同时活动线程的数量 如果库已经可以为我完成的话 我不想编写代码来跟踪活动线程的数量 我正在使用 POSIX pthreads 并且我正在尝试为 Unix 和类
  • 在 PHP 中使用 pthreads 创建异步超时

    我正在尝试在 PHP 中创建某种异步超时 我使用 PECL 扩展 pthreads 来实现多线程 异步超时工作正常 但参考却不然 我使用 PHP 5 5 8 进行此测试 class ParentClass public test publi
  • Linux 中的 C 聊天室 / Socket 编程

    我有一个简单的服务器和客户端 C 代码来使用线程 pthread 库 为多客户端创建一个聊天室 我一直遇到的问题是 我无法想出一种方法让服务器将客户端通过套接字发送到所有其他客户端的每条消息写入 我在这里读过其他类似的帖子 但很无奈 请帮助
  • 什么时候调用CloseHandle?

    我有一个主线程 它接收需要一些时间的操作 所以我创建一个线程并将工作委托给它 当主线程接收作业时 将调用此执行函数 每个作业都执行此执行 Return type execute Arguments here if a file read c
  • valgrind 检测到分离 pthread 的数据争用

    我正在创建两个detached线程 pthread attr t tha1 void fun1 void return 0 void fun2 void return 0 int main pthread t th1 th2 pthread
  • 完成后关闭线程

    完成后如何关闭线程 比如确保没有任何东西再打开或运行 到目前为止我知道如何打开它 但是 不知道如何正确关闭它 int iret1 pthread t thread1 char message1 void multithreading1 vo
  • 线程池,C++

    我正在使用 C 开发一个网络程序 我想实现一个 pthread 池 每当我从接收套接字接收到一个事件时 我都会将数据放入线程池中的队列中 我正在考虑创建 5 个独立的线程 并将持续检查队列以查看是否有任何传入数据需要完成 这是一个非常简单的
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • 在 std::thread 创建的线程中调用 pthread_sigmask 是一个好习惯吗?

    1 我是 std thread 的新手 我想知道调用是否是一个好的做法pthread sigmask 阻止某些信号特别的线程创建者std thread 我不希望新线程接收SIGTERM SIGHUP等信号 因为主进程已经安装了这些信号的处理
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc

随机推荐

  • 如何使用 PHP 将文件从服务器复制到 Dropbox? [复制]

    这个问题在这里已经有答案了 我想我可能找到了一个 PHP 程序 可以将特定文件夹中的文件上传到我的 Dropbox 帐户 完整的解决方案可以找到here 该代码似乎有效 因为正在上传类似的文件和文件夹 但是 我不希望预先压缩服务器上的文件
  • 仅使用 javascript 列出目录中的文件

    是否可以仅使用 javascript 列出目录中的文件 为了澄清 我的意思是列出服务器上的文件 而不是客户端计算机上的文件 例如 www domain com files 包含 4 张图片 jpg 我可以创建一个额外的页面 www doma
  • 在 RMarkdown 中缩进而不添加项目符号点或数字

    我想制作一个缩进列表 但我不希望它有要点或数字 我在 RStudio 中使用 Rmarkdown 并编织为 html bla bla bla Example indented line with bullet point Another i
  • 使用来自多个点的多个图像构建 3D 模型 (kinect)

    如果从不同角度收集各种图像和深度数据 是否可以构建静止物体的 3D 模型 我的想法是有一种圆形传送带 其中将放置 kinect 并且传送带同时要在 3D 空间中重建的真实物体位于中间 此后传送带围绕图像旋转一圈 并捕获大量图像 可能每秒 1
  • python numpy 机器 epsilon

    我想了解什么是机器 epsilon 根据维基百科 可以计算如下 def machineEpsilon func float machine epsilon func 1 while func 1 func machine epsilon f
  • Java 6 源代码向后兼容性和 SQL

    我的理解是 为了保持源兼容性 Java 永远不会向公共接口引入新方法 因为这会破坏实现接口的现有客户端 Java 发行说明 states 一般来说 政策如下 除了任何不兼容的情况 进一步列出如下 维护版本 例如 1 4 1 1 4 2 不引
  • jQuery .attr("disabled", "disabled") 在 Chrome 中不起作用

    不知道为什么这不起作用 当人们单击我的应用程序的 编辑 按钮时 禁用的文本字段将变为可编辑 bewerken click function e input disabled disabled removeAttr disabled 然后 我
  • 如何修复错误; “错误:Bootstrap 工具提示需要 Tether (http://github.hubspot.com/tether/)”

    我正在使用 Bootstrap V4 控制台中记录了以下错误 错误 Bootstrap 工具提示需要 Tether http github hubspot com tether 我尝试通过安装 Tether 来消除该错误 但没有成功 我通过
  • 进度条与 asyncTask 一起使用

    我想在屏幕上使用进度条而不是进度对话框 我在 XML 视图文件上插入了一个进度条 我想让它在加载时显示 在不加载时禁用它 所以我使用的是可见的 但它发生了 所以其余的数据下降了 我应该如何在异步任务中使用进度条 我怎样才能显示和隐藏它 这是
  • Android 实时开发者通知一次性购买成功了一半

    当我使用 慢速测试卡 几分钟后批准 时 Android 的实时开发人员通知会起作用 我通过 pub sub 在我的服务器上收到两个通知 一种是当购买已完成并且其中包含令牌和订单时的消费状态 0 时 第二个通知 在它被消费后 带有 token
  • 导入错误:没有名为 lxml.etree 的模块

    我正在尝试在我的项目中导入预邮件程序 但它在 etree 导入中始终失败 我安装了 lxml 的 2 7 二进制文件 lxml 模块导入正常 如果我记录 lxml 模块 它会显示库文件夹的正确路径 但我无法从中导入 etree lxml 文
  • Java从文本文件中读取值

    我是 Java 新手 我有一个包含以下内容的文本文件 trace structure list a structure c 0 748701 0 243802 0 227221 0 752231 0 261118 0 263976 1 19
  • 在 Python 中处理多个文件时如何避免嵌套“with”语句

    当使用推荐的样式在 Python 中处理多个文件时 代码可能会变得丑陋 with open foo txt as foo with open bar txt w as bar with open baz txt w as baz Read
  • PHP 包含文件扩展名吗?

    对于 PHP 中必需 包含的文件 使用更好吗 inc扩展 vs inc php vs php扩展 有时人们使用 inc扩展 然后进行一些服务器配置以保留 inc通过网络浏览器访问文件 这might如果由知识渊博的系统管理员绝对正确地完成 那
  • 修剪所有数据库字段

    您知道 sql server 中是否有一种快速方法 通过 transact sql 可以修剪所有数据库字符串字段 没有光标 复制并粘贴输出 也适用于没有 varchar max 的 SQL 2000 如果需要 可以轻松扩展以将 GO 行添加
  • 如何显示当前登录的用户 Firebase

    mAuth FirebaseAuth getInstance mFirebaseDatabase FirebaseDatabase getInstance myRef mFirebaseDatabase getReference child
  • 分组函数(tapply、by、aggregate)和 *apply 系列

    每当我想在 R 中做一些 map py 的事情时 我通常会尝试使用apply家庭 然而 我一直不太明白它们之间的区别 如何 sapply lapply等 将函数应用于输入 分组输入 输出会是什么样子 甚至输入可能是什么 所以我经常会仔细检查
  • 如何读取 JMS 消息而不使用它们 - 使用 ActiveMQ

    我想知道是否有任何方法可以读取 jms 和 activemq 消息而不消耗它 我知道消息可以从队列中消费 但我仍然想问这个问题 您可以通过 JMS QueueBrowser 浏览队列上的消息 或者在 ActiveMQ 中您可以通过 JMX
  • 如果数据源不包含任何项目,如何在 ASP.NET C# 中隐藏转发器?

    我有一个 ASP NET 页面 它使用嵌套在另一个转发器中的转发器来生成数据列表 其作用如下
  • Pthread:为什么人们费心使用 pthread_exit?

    据我了解 当您需要终止具有返回值的线程时 pthread exit 完全等于 return 当人们可以使用一致的方式 即返回 来完成工作时 为什么 Pthread 定义这样一个重复的接口 我想到的两个原因 pthread exit 允许您从