问题标签 [pthreads]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 非阻塞 pthread_join
我正在编写多线程服务器的关闭代码。如果一切顺利,所有线程都应该自行退出,但是线程卡住的可能性很小。在这种情况下,使用非阻塞连接会很方便所以我可以做到。
有没有办法进行非阻塞 pthread_join?某种定时加入也会很好。
像这样的东西:
我可以想到更多非阻塞连接有用的情况。
似乎没有这样的功能,所以我已经编写了一个解决方法,但这并不像我想要的那么简单。
c++ - 多线程调试器
在使用多线程(pthread)进行调试时,GDB 会出现严重问题。*nix 上是否还有其他适用于 C/C++ 的优秀多线程调试器?
c++ - 作为 C++ 类的成员启动线程的最佳方式?
我想知道启动作为 C++ 类成员的 pthread的最佳方法?我自己的方法如下作为答案......
c++ - GDB 回溯消息“0x0000000000000000 in ?? ()”是什么意思?
当它给出具有以下输出的回溯时,这意味着什么?
程序因标准信号 11、分段错误而崩溃。我的应用程序是一个在 FreeBSD 6.3 上运行的多线程 FastCGI C++ 程序,使用 pthread 作为线程库。
根据信息来源,它已使用 -g 编译,并且我的源代码的所有符号表都已加载。
很明显,我的实际代码都没有出现在跟踪中,而是错误似乎来自标准 pthread 库。特别是,什么是??()????
编辑:最终在我的主代码中将崩溃追踪到标准的无效内存访问。没有解释为什么堆栈跟踪已损坏,但这是另一天的问题:)
c - 是什么让 pthread 失效了?
我正在使用当前创建后台线程 (PTHREAD_DETACHED) 然后调用 pthread_exit(0) 的多线程程序(使用 pthreads)。我的问题是该进程随后被列为“已失效”,奇怪的是似乎在 /proc 中并不“真正存在”(这破坏了我的调试策略)
我希望满足以下要求:
- 程序应该循环运行函数 A 和函数 B 一次
- 给定程序 /proc/$pid/exe 的 PID,/proc/$pid/maps 和 /proc/$pid/fd 必须是可访问的(当进程失效时,它们都是空链接或无效链接)
- 必须可以像往常一样使用 CTRL+C 和 CTRL+Z 暂停/中断程序
编辑:我犹豫要更改程序的界面,以使 A 在“主”线程中,而 B 在衍生线程中(它们目前以另一种方式)。它会解决问题吗?
c - pthread_detach 会为我管理我的内存吗?
假设我有以下代码:
分离的线程会释放 malloc 分配的内存,还是我现在必须做的事情?
c# - pthread_cond_t 的 EventWaitHandle 行为
我最近看到了 EventWaitHandle 在 C# 中的强大行为,并决定在姊妹应用程序中移动一些功能来做同样的事情。唯一的问题是姊妹应用程序是用 C 编写的。
没什么大不了的,我正在使用 pthreads,它有一个 pthread_cond_t 数据类型,允许发送信号。我唯一的问题是,是否有可能在等待它之前“发出信号”?
现在我的测试说不。也就是说,如果 ThreadA 在 ThreadB 等待之前触发了一个信号,那么 ThreadB 将无限期地等待。是否有另一种我可以使用的 pthread 类型更接近 C# 中 EventWaitHandle 的功能?一个对象是有信号的,这意味着第一个等待它的线程将立即通过,并将其设置为无信号。
将 pthread_cond 包装到另一个数据结构中并不难实现这一点。但同样,这个功能是否已经在 pthread 库中可用?
c++ - 你如何为 x64 编译静态 pthread-win32 库?
看起来已经做了一些工作来使pthread-win32与 x64 一起工作,但没有构建说明。我尝试使用 Visual Studio x64 交叉工具命令提示符进行简单构建,但是当我尝试从 x64 应用程序链接到 lib 时,它看不到任何函数导出。似乎它仍在将 lib 编译为 x86 或其他东西。
我什至尝试在适当的地方将 /MACHINE 添加到 makefile 中,但这没有帮助。有没有人让这个工作?
multithreading - 您使用哪些并行编程 API?
考虑到当今多核和多处理硬件的巨大重要性,试图了解人们目前实际上是如何编写并行代码的。对我来说,主要的范式似乎是 pthreads(POSIX 线程),它在 Linux 上是原生的,在 Windows 上可用。HPC 人倾向于使用 OpenMP 或 MPI,但在 StackOverflow 上似乎没有很多。还是您依赖 Java 线程、Windows 线程 API 等而不是可移植标准?在您看来,进行并行编程的推荐方法是什么?
或者您是否在使用更奇特的东西,例如 Erlang、CUDA、RapidMind、CodePlay、Oz,甚至亲爱的老 Occam?
澄清:我正在寻找非常便携且适用于各种主机架构上的平台(例如 Linux、各种 unix)的解决方案。Windows 是一种极少的支持很好的案例。所以 C# 和 .net 在这里真的太狭窄了,CLR 是一项很酷的技术,但他们能否为 Linux 主机发布它,以便它像 JVM、Python、Erlang 或任何其他可移植语言一样普遍。
C++ 或基于 JVM:可能是 C++,因为 JVM 倾向于隐藏性能。
MPI:我同意即使是 HPC 人员也认为它是一个难以使用的工具——但对于在 128000 个处理器上运行,它是解决 map/reduce 不适用的问题的唯一可扩展解决方案。不过,消息传递非常优雅,因为它是唯一一种似乎可以很好地扩展到本地内存/AMP、共享内存/SMP、分布式运行时环境的编程风格。
一个有趣的新竞争者是MCAPI。但我认为还没有人有时间对此进行任何实践经验。
所以总的来说,情况似乎是有很多我不知道的有趣的微软项目,而 Windows API 或 pthreads 是实践中最常见的实现。