pthreads相关内容

OS X 上的 sem_init

我正在编写一些使用 pthread 和信号量库的代码.sem_init 函数在我的 Ubuntu 机器上运行良好,但在 OS X 上 sem_init 函数完全无效.图书馆有什么问题还是有不同的做法?这是我用来测试的代码. sem_t sem1;sem_t sem2;sem_t sem3;sem_t sem4;sem_t sem5;sem_t sem6;sem_init(&sem1, 1, 1) ..
发布时间:2021-12-06 20:43:11 其他开发

当主线程退出时,其他线程是否也退出?

我对同一进程中的主线程和其他线程有疑问.当 main 函数返回时,其他线程是否也退出?我对此感到困惑. 考虑以下测试代码: void* test1(void *arg){无符号整数 i = 0;而 (1){我+=1;}返回空;}void* test2(void *arg){长双 i = 1.0;而 (1){我*= 1.1;}返回空;}void startThread ( void * (* ..
发布时间:2021-12-06 11:44:37 其他开发

重入锁和一般概念是什么?

我总是很困惑.有人会解释 Reentrant 在不同上下文中的含义吗?为什么要使用可重入与不可重入? 说 pthread (posix) 锁定原语,它们是否可重入?使用时应避免哪些陷阱? 互斥量是可重入的吗? 解决方案 重入锁 可重入锁是一种进程可以多次声明锁而不阻塞自身的锁.在不容易跟踪您是否已经拿到锁的情况下,它很有用.如果一个锁是不可重入的,你可以抓住这个锁,然后在 ..
发布时间:2021-12-06 11:39:24 其他开发

编译时 -pthread 和 -lpthread 之间的区别

编译多线程程序时使用的gcc -pthread和gcc -lpthread有什么区别? 解决方案 -pthread 告诉编译器链接 pthread 库并配置线程的编译. 例如,以下显示了在我的 Ubuntu 机器上安装的 GCC 包上使用 -pthread 选项时定义的宏: $ gcc -pthread -E -dM test.c >dm.pthread.txt$ gcc -E - ..
发布时间:2021-12-06 11:11:51 其他开发

mingw-w64 线程:posix 与 win32

我正在 Windows 上安装 mingw-w64,有两个选项:win32 线程和 posix 线程.我知道 win32 线程和 pthreads 之间有什么区别,但我不明白这两个选项之间有什么区别.我怀疑如果我选择 posix 线程,它会阻止我调用 CreateThread 之类的 WinAPI 函数. 这个选项似乎指定了某个程序或库将使用哪个线程 API,但是什么?通过 GCC、libs ..
发布时间:2021-12-05 19:18:04 其他开发

POSIX API 调用以列出进程中运行的所有 pthread

我在 POSIX/Linux 环境中有一个多线程应用程序 - 我无法控制创建 pthread 的代码.在某些时候,进程(pthread 的所有者)会收到一个信号. 该信号的处理程序应中止、取消或停止所有 pthread 并记录正在运行的 pthread 数量. 我的问题是我找不到如何列出进程中运行的所有 pthread. 解决方案 似乎没有任何可移植的方法来枚举进程中的线程. ..
发布时间:2021-12-03 13:49:33 服务器开发

如何提高pthreads中的线程优先级?

我在 Linux 中使用 pthread.我想通过设置参数sched_pa​​ram.priority 来增加线程优先级.但是,我在网上找不到很多关于我可以设置的线程优先级范围的信息,或者关于线程优先级的描述. 另外,我想知道相对线程优先级,因为我不想将线程优先级设置得太高而导致操作系统停止.有人可以帮我解决这个问题吗? 解决方案 默认的 Linux 调度策略是 SCHED_OTHE ..
发布时间:2021-12-03 13:41:03 C/C++开发

Valgrind 检测到仍可到达的泄漏

本块中提到的所有函数都是库函数.我怎样才能纠正这个内存泄漏? 它列在“仍可访问"类别下.(还有 4 个,非常相似,但大小不同) 5 of 5 丢失记录中 1 个块中的 630 字节仍然可以访问在 0x4004F1B: calloc (vg_replace_malloc.c:418)通过 0x931CD2: _dl_new_object (dl-object.c:52)通过 0x92DD3 ..
发布时间:2021-12-02 08:07:56 其他开发

在 Linux 中对 pthread_create 的未定义引用

我从 https://computing.llnl.gov/tutorials 摘取了以下演示/pthreads/ #include #include #define NUM_THREADS 5void *PrintHello(void *threadid){好久不见;tid = (long)threadid;printf("Hello World!是我,线程#%ld!\n", tid);pth ..
发布时间:2021-12-01 23:58:15 服务器开发

编译时-pthread标志的意义

在各种多线程 C 和 C++ 项目中,我看到 -pthread 标志应用于编译和链接阶段,而其他人根本不使用它,只是通过 -lpthread 到链接阶段. 不使用 -pthread 标志编译和链接是否有任何危险 - 即 -pthread 实际做什么?我主要对 Linux 平台感兴趣. 解决方案 尝试: gcc -dumpspecs |grep线程 并查找以 %{pthread: ..
发布时间:2021-12-01 15:40:54 C/C++开发

使用 -pthread 自动配置

您好.我正在尝试创建一个 autoconf 配置脚本,该脚本会自动检查要使用的 pthread 选项,并且理想情况下,在使用 gcc 编译时指定 -pthread. 我希望 AX_PTHREAD 可以工作,但似乎都不适用于 MacOS 10.6. 我正在使用来自 http://www.nongnu.org/autoconf-的 AX_PTHREAD-存档/ax_pthread.html ..
发布时间:2021-11-30 19:06:02 其他开发

哪个更有效,基本互斥锁或原子整数?

对于像计数器这样简单的东西,如果多个线程将增加数量.我读到互斥锁会降低效率,因为线程必须等待.所以,对我来说,原子计数器是最有效的,但我在内部读到它基本上是一个锁?所以我想我很困惑如何才能比另一个更有效率. 解决方案 原子操作利用处理器支持(比较和交换指令)并且根本不使用锁,而锁更依赖于操作系统并且执行不同,例如例如,Win 和 Linux. 锁实际上会暂停线程执行,为其他任务释放 ..
发布时间:2021-11-30 14:50:26 其他开发

Pthread 互斥断言错误

我在基于 linux (arm) 的通信应用程序中在不可预知的时间遇到​​以下错误: pthread_mutex_lock.c:82: __pthread_mutex_lock: 断言 `mutex->__data.__owner == 0' 失败. Google 提供了很多对该错误的引用,但似乎与我的情况相关的信息很少.我想知道是否有人可以给我一些有关如何解决此错误的想法.有没有人知道这个断 ..
发布时间:2021-11-30 11:30:13 服务器开发

ENOMEM 创建线程失败的原因?

我有一个应用程序在主线程中使用 pthread_create() 和 pthread_detach(),然后在子线程中使用 pthread_exit()线程. 在大约 54 个 pthread_create() 调用之后,每个调用都与后续的 pthread_detach() 和 pthread_exit() 配对,>pthread_create() 失败.ENOMEM 失败“内存不足". ..
发布时间:2021-11-25 07:20:26 C#

gdb:找不到新线程:系统更新后出现一般错误

我在运行我的应用程序的 ARM 板上运行基于 OpenEmbedded 的 Linux.我曾经运行过内核 2.6.35、gdb 6.8 和 gcc 4.3.最近我将系统更新到内核 2.6.37、gdb 7.4(也尝试了 7.3)和 gcc 4.6. 现在,我的应用程序无法再调试(在 ARM 板上),每次我尝试在 gdb 中运行它时,我都会收到错误“gdb:找不到新线程:通用错误".该应用程序 ..
发布时间:2021-11-17 22:17:58 其他开发

从主线程到线程传递参数.当线程退出主线程时,它会被重置为 0.为什么?

对于 uni 分配,我们必须使用蒙特卡罗方法估计 pi ​​并在线程中实现它.我的代码在下面,一切似乎都很好,除非我创建的线程结束时变量 numberOfPointsPerThread 被重置为 0.有人知道这是为什么吗?我认为每个线程都有自己的堆栈版本,因此当它退出时,它应该清除主线程堆栈.还是我错了? void * threadMonteCarlo(void * param){整数 r = ..
发布时间:2021-11-17 05:52:15 其他开发

从主线程到线程传递参数.当线程退出主线程时,它会被重置为 0.为什么?

对于 uni 分配,我们必须使用蒙特卡罗方法估计 pi ​​并在线程中实现它.我的代码在下面,一切似乎都很好,除非我创建的线程结束时变量 numberOfPointsPerThread 被重置为 0.有人知道这是为什么吗?我认为每个线程都有自己的堆栈版本,因此当它退出时,它应该清除主线程堆栈.还是我错了? void * threadMonteCarlo(void * param){整数 r = ..
发布时间:2021-11-17 05:50:58 其他开发

当 pthread_attr_t 不为 NULL 时?

来自 POSIX 线程的 pthread_create 的所有参数都非常容易理解,除了 pthread_attr_t.pthread_attr_t 是什么,如何以及何时不应由 NULL 初始化? 我浏览了 Linux 手册页.我找到的关于 pthread_attr_t 的描述是: 语法: int pthread_create(pthread_t *thread, const pthr ..
发布时间:2021-11-17 05:47:04 其他开发

pthread 中的参数传递错误

我编写了一个代码来打印字符串:“Thread 0";到“线程 4"使用 pthread. 这是我的代码: 案例 1: #include #include #include void *print_message_function(void* 参数) {long *i = (long *) 参数;printf(“线程 %ld\n", *i);pthread_exit(0);}int m ..
发布时间:2021-11-17 05:44:03 其他开发