问题标签 [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 投票
7 回答
16398 浏览

windows - 将 Windows 手动重置事件移植到 Linux?

将 Windows 手动重置事件移植到 pthread 是否有比 pthread 条件变量 + pthread 互斥体 + 如果设置或未设置事件的标志更简单的解决方案?

0 投票
13 回答
18827 浏览

c - 如何加入挂在阻塞 IO 上的线程?

我有一个线程在后台运行,它以阻塞方式从输入设备读取事件,现在当我退出应用程序时,我想正确清理线程,但我不能只运行 pthread_join() 因为线程由于阻塞 IO,永远不会退出。

我该如何正确解决这种情况?我应该发送 pthread_kill(theard, SIGIO) 还是 pthread_kill(theard, SIGALRM) 来打破块?这是否是正确的信号?还是有另一种方法来解决这种情况并让该子线程退出阻塞读取?

目前有点困惑,因为我的谷歌搜索都没有找到解决方案。

这是在 Linux 上并使用 pthreads。

编辑:我玩了一下 SIGIO 和 SIGALRM,当我不安装信号处理程序时,它们会破坏阻塞 IO,但会在控制台上给出一条消息(“I/O 可能”)但是当我安装信号处理程序时,为避免该消息,它们不再中断阻塞 IO,因此线程不会终止。所以我有点回到第一步。

0 投票
6 回答
3969 浏览

c++ - 如何使用 POSIX 线程实现阻塞读取

我想实现一个生产者/消费者场景,该场景遵循大致如下的接口:

在这种情况下,feedandrun将在单独的线程上运行,并且read应该是阻塞读取(如recvand fread)。显然,我需要在我的双端队列上进行某种互斥,并且我需要某种通知系统来通知read重试。

我听说条件变量是要走的路,但我所有的多线程体验都在 Windows 上,我很难理解它们。

谢谢你的帮助!

(是的,我知道返回向量是低效的。我们不要讨论这个。)

0 投票
5 回答
5363 浏览

c++ - 在哪里可以了解有关 pthread 的更多信息?

我被要求处理一段严重依赖 pthread 的代码。对这个库进行了如此多的调用,我对此一无所知。我已经学习了 pthread 的基础知识并尝试了一些示例,例如创建连接等,但不知道它的深度。

我使用http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html学到了很多东西

上面的教程没有深入介绍初学者应该需要的 pthread 库。你们可以为我推荐一个网站或电子书,让我看看并学习大多数高级的东西,比如信号处理、互斥锁、并发等。

TIA, the_Saint

0 投票
6 回答
25689 浏览

synchronization - 如何同步两个进程?

我有一个硬件接口,我想在同一个工作站上的两个应用程序(进程)中使用。硬件需要一个初始化调用,然后任何一个应用程序都使用相同的函数(在同一个库中)与硬件进行许多事务。

所以每个应用程序都应该像这样:

我可以在两个应用程序之间共享的锁和引用计数调用中使用什么机制?我正在考虑命名管道,即 mkfifo()。

0 投票
3 回答
1055 浏览

windows - 如何找到线程本地存储的开始和结束?

在 Windows 和 Linux 下,给定一个线程句柄,我如何确定其对应的静态线程本地存储块的开始和结束?

0 投票
1 回答
2065 浏览

c++ - 在 AIX 上使用 pthread 进行静态链接

我已经阅读和研究了这几天,并决定我需要一些外部帮助!

(而且这个网站似乎是一个不错的地方,所以我想我会在这里发布我的问题,看看情况如何)

我们的小公司已经好几年没有在 AIX 上构建我们的应用程序了,我被分配了这项任务(幸好我喜欢挑战)。

我遇到的问题很容易描述,我可以看到其他人也在经历它,尽管我似乎无法找到答案。

如果我链接应用程序“非静态”,这意味着我不在构建命令中使用“-static”,则该应用程序在开发机器上运行良好,但在我们用于测试的其他 AIX 机器上运行良好。

【两机速记;

开发:

测试:

]

如果我与“-static”链接,则应用程序在开发机器上运行时会在引发异常时“中断”:

并且(好像这还不够),该应用程序仍然无法在测试机器上运行:

我应该在这里注意我们正在使用“-pthead”进行链接,并且我已经阅读了几篇文章说在使用 pthread 时静态链接是不合适的。

我的脑袋疼。

我将非常感谢您对此的任何意见。

0 投票
2 回答
14053 浏览

initialization - pthread_mutex_t 初始化错误

我在老虎上使用 xcode 2.4.1。当我在下面做的时候一切都好。当我做

我得到这两个错误

我不知道为什么。但是,如果我这样做 pthread_mutex_t 静音 = PTHREAD_MUTEX_INITIALIZER; 它工作正常。为什么?

-edit- 我还没有运行它,但这似乎可以编译。为什么?嗯?

0 投票
3 回答
15553 浏览

multithreading - POSIX 取消点是什么?

POSIX 取消点是什么?我正在寻找一份明确的 POSIX 取消点列表。

我之所以问,是因为我有一本书说accept()select()取消点,但我看到互联网上的网站声称它们不是。

此外,如果 Linux 取消点与 POSIX 取消点不同,我也想要一份它们的列表。

0 投票
1 回答
323 浏览

c++ - mem_fun 失败,pthread 和类 ptr

pthread接受作为它的参数void *(*start_routine)(void* userPtr),我希望我可以用它std::mem_fun来解决我的问题,但我不能。

我想使用该功能void * threadFunc()并将其userPtr作为类(userPtr->threadFunc())。有没有类似于std::mem_func我可以使用的功能?