问题标签 [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.

0 投票
6 回答
8336 浏览

c++ - 不锁定 pthread_cond_timedwait 和 pthread_cond_signal 的互斥锁(在 Linux 上)

调用 pthread_cond_timedwait 而不先锁定相关联的互斥锁,并且在调用 pthread_cond_signal 时也不使用互斥锁,是否有任何缺点?

就我而言,确实没有条件检查,我想要一个与 Java wait(long) 和 notify() 非常相似的行为。

根据文档,可能存在“不可预测的调度行为”。我不确定那是什么意思。

一个示例程序似乎可以在不首先锁定互斥锁的情况下正常工作。

0 投票
2 回答
124 浏览

linux-kernel - 在 2.4 内核的多线程应用程序中等待失败

我有一个多线程的应用程序 - 一个线程负责用 wait() 收集死去的孩子,另一个线程根据请求用 fork 生成它们。

我发现在一个具有 2.4 内核和 LinuxThread 的平台上等待总是失败并出现 ECHILD。我发现问题可能出在 2.4 内核上不符合 POSIX 标准的 LinuxThreads 实现中,以下讨论表明无法解决此问题。

我仍然想确定没有人知道任何解决方案。甚至内核的补丁也是可以接受的。

当我考虑应用程序设计时,我认为不可能在单个线程中同时执行 fork() 和 wait() (或仅通过巨大的努力)

0 投票
2 回答
1278 浏览

c++ - pthreads线程的唯一和常量标识符?

我假设 apthread_t在给定线程的整个生命周期中都保持不变,但我的实验似乎证明了这个假设是错误的。如果给定线程的 id 在其生命周期内不保持不变,我如何存储一个pthread_t以便另一个线程可以pthread_join用来阻塞直到线程完成?

由于其他原因,知道如何获取线程的唯一标识符,我可以来回转换为pthread_t. 有没有办法做到这一点?

那里有很多很棒的信息,但我很难为这些问题找到有用的答案。我会很感激我能得到的任何帮助/建议!

编辑:另外,我不知道为什么,但是在每个新线程的前面(在线程的函数内)添加 sleep(1) 和休眠 1 秒时,一切似乎都按预期工作。这可能是一根稻草,但pthread_t值会在新线程开始时暂时改变吗?

0 投票
2 回答
1854 浏览

c++ - pthread_cond_timedwait linking error with clock_gettime on Solaris 10

I have a bit of code which used pthread_cond_wait which looks like this:

But I get a linker error on compilation,

undefined symbol clock_gettime ... first referenced in (the file with that code)

This is the only linker error I get; if I comment out this block of code it compiles, so the pthread library is loading. I read somewhere that I need the -lc flag set, which I have done but it appears that I need to set something else too.

Does anybody know what?

This is on Solaris 10, using Sun's 5.8 compiler.

0 投票
1 回答
6154 浏览

c - 调用 pthread_cond_broadcast 是否持有互斥锁?

使用 pthread_cond_t 我们必须关联一个互斥锁,当发出条件信号时,我看到了诸如

哪一个是正确的方法?(有关系吗 ?)

0 投票
8 回答
45120 浏览

linux - Pthread互斥断言错误

在基于 linux(arm)的通信应用程序中,我在不可预知的时间遇到​​以下错误:

谷歌出现了很多关于该错误的引用,但似乎与我的情况相关的信息很少。我想知道是否有人可以给我一些有关如何解决此错误的想法。有谁知道这个断言的共同原因?

提前致谢。

0 投票
6 回答
6550 浏览

c - 哪个更适合窗户?pthreads 或 CreateMutex?

我正在将我的应用程序从 Linux 移植到 Windows。我对跨平台移植应用程序的艺术相当陌生。据我所知,Windows 本身并不支持 POSIX 线程实现。这是真的?我听说过一些 Windows 的 pthread 实现(包装器或其他东西),使用它们或使用 Windows 提供的 CreateMutex 和其他 API 会更好吗????有人请。用两个世界的优点和缺点启发我。一些关于移植的杂项提示会很好地配合答案。

提前致谢。

0 投票
6 回答
101942 浏览

c++ - 简单的线程!C++

我不知道为什么这不起作用

错误:

[描述、资源、路径、位置、类型] 初始化参数 3 的 'int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)' threading.cpp threading/src line 24 C/ C++ 问题

0 投票
4 回答
346 浏览

c - 在c中获取处理单元(#cpu,cores)的nr的便携式方法?

有没有办法获得系统中处理单元的数量,如 cpus 或核心?我将使用 pthreads 编写一个应用程序,所以如果有一个 posix 调用会很棒。我知道从 /proc/cpuinfo 读取,但这不是那么便携。还有其他更便携的方式吗?

0 投票
2 回答
67457 浏览

c - 为什么在 pthread 等待条件周围需要一个 while 循环?

我正在学习 pthread 和等待条件。据我所知,典型的等待线程是这样的:

我无法理解的是为什么while(!condition)即使我pthread_cond_signal()用来唤醒线程也需要这条线。

我可以理解,如果我使用pthread_cond_broadcast()我需要测试条件,因为我唤醒了所有等待的线程,其中一个线程可以在解锁互斥锁之前再次使条件为假(从而将执行转移到另一个不应该执行的唤醒线程)观点)。但是如果我使用pthread_cond_signal()我只唤醒一个线程,所以条件必须为真。所以代码可能如下所示:

我读了一些关于可能发生的虚假信号的文章。这是(而且只有这个)原因吗?为什么我应该有虚假信号?或者还有什么我不明白的?

我假设信号代码是这样的: