pthreads相关内容
我正在寻找使用 pthread 同步语义的 C 中线程安全阻塞队列(多生产者/消费者)的推荐实现. 解决方案 试试 APR 队列.它被 apache web 服务器使用并且经过很好的测试. http://apr.apache.org/docs/apr-util/1.3/apr__queue_8h.html
..
我正在尝试在我的应用程序中编写暂停/取消暂停所有线程,该线程由 SIGUSR1(暂停)和 SIGUSR2(取消暂停)激活.我想在所有线程中使用 pthread_cond_wait() ,当收到信号时,有条件地使用 pthread_cond_broadcast() 我会挂起所有线程,但显然它不安全在信号处理程序中使用 pthread_cond_broadcast()... 这个问题有什么替代解决方案
..
我想知道在 pthread 中使用条件变量而不是互斥锁有什么性能优势. 我发现:“没有条件变量,程序员需要让线程不断轮询(可能在关键部分),以检查是否满足条件.这可能非常消耗资源,因为线程会连续忙于这项活动.条件变量是一种无需轮询即可实现相同目标的方法.(https://computing.llnl.gov/tutorials/pthreads) 但似乎互斥锁调用也是阻塞的(与自旋锁不
..
我的应用程序中创建了许多线程.当我执行命令“信息线程"时,一些线程名称在 gdb 中可见,其他线程名称不显示.如何获取所有线程名称本身而不是像 0xb7fe1424 这样的十六进制值 4 线程 0xb68ffb70 (LWP 18377) 0xb7fe1424 in __kernel_vsyscall ()* 3 线程 0xb7291b70 (LWP 18375) JKMainT (arg=0x
..
有谁知道从 pthread_t 到 GDB 显示的信息线程的方法吗? 所以我有: (gdb) 信息线程37 线程 22887 0xb7704422 在 __kernel_vsyscall()36 线程 22926 0xb7704422 在 __kernel_vsyscall()35 线程 22925 0xb7704422 在 __kernel_vsyscall()34 线程 22924 0
..
当我对加载链接到 pthread 的 .so 的程序运行 GDB 时,GDB 报告错误“找不到新线程:通用错误". 请注意,我运行的可执行文件未与 pthread 链接. 有什么线索吗? $ gdb --args lua -lluarocks.requireGNU gdb (GDB) 7.0-ubuntu版权所有 (C) 2009 Free Software Foundation,
..
TL;DR 在多处理器/多核引擎上,可以在多个执行单元上调度多个 RT SCHED_FIFO 线程.因此优先级为 60 的线程和优先级为 40 的线程可以同时运行在 2 个不同的内核上. 这可能违反直觉,尤其是在模拟嵌入式系统时(通常像今天一样)在单核处理器上运行并依赖严格的优先级执行. 请参阅此帖子中的我的其他答案以获取摘要 原始问题描述 即使使用非常简单的代码来让
..
我有一个使用两个线程的程序.我在两个线程中都设置了断点.在 gdb 下运行程序时,我想在线程之间切换并使它们运行.(线程 t1 处于活动状态并正在运行,线程 t2;在断点处暂停时.我想停止 T1 运行并运行 T2). 有什么方法可以在 gdb 中调度线程吗? 解决方案 如果您使用的是 GDB 7 或更高版本,请尝试“不间断模式". http://sourceware.org/g
..
更新:看起来我在这里没有做错任何事情.当我执行一个线程示例时,它工作正常.我不确定,那为什么我在启动 Apache 时会出现这些错误. 有什么想法吗? 我正在尝试在 Xampp (Windows 7) 上安装 pThread,如下所示: 我的PHP版本信息:5.4.7 VC9 x86 我已经下载了php_pthreads-0.0.45-5.4-ts-vc9-x86.zip
..
函数 pthread_mutex_init 允许您指定指向属性的指针.但是我还没有找到关于 pthread 属性是什么的一个很好的解释.我一直只提供NULL.这个论点有用吗? 文档,给那些忘记它的人: PTHREAD_MUTEX_INIT(3) BSD 库功能手册 PTHREAD_MUTEX_INIT(3) 名字pthread_mutex_init -- 创建一个互斥体
..
我正在尝试使用 LD_PRELOAD 机制插入对 pthread_cond_broadcast 的调用.我插入的 pthread_cond_broadcast 函数只是调用了原始的 pthread_cond_broadcast.但是,对于一个同时调用 pthread_cond_wait 和 pthread_cond_broadcast 的非常简单的 pthread 代码,我要么在 glibc 中出
..
我有一个带有静态变量('abc.cpp')的简单程序: #include int main(int, char**){静态常量 std::string a("123");std::cout g++ -ggdb abc.cpp -o abc>./abc你好世界 但是,如果我在 pthread 库中链接...... >g++
..
我有一个包含线程的对象.我希望对象的命运和线程的命运是一回事.因此构造函数创建一个线程(使用pthread_create),析构函数执行操作以使线程在合理的时间内返回,然后加入线程.只要我不使用静态存储持续时间实例化这些对象之一,它就可以正常工作.如果我在全局或命名空间或静态类范围内实例化这些对象之一,则程序编译良好(gcc 4.8.1)但在运行时立即出现段错误.使用打印语句,我确定主线程在段错误
..
我知道从线程调用 fork() sys_call 是个坏主意.但是,如果一个线程使用 fork() 创建一个新进程会发生什么? 新进程将是创建线程的主线程的子进程.我想. 如果其父进程首先完成,则新进程将附加到 init 进程.它的父线程是主线程,而不是创建它的线程. 如果我错了,请纠正我. #include #include 主函数()
..
我在 *.cc 文件中使用 pthread.h.当我尝试使用 pthread_exit(0); 或 pthread_join(mythrds[yy],NULL); 它说: .cc:(.text+0x3e): undefined reference to `pthread_exit' 当使用 gcc 在 *.c 文件中编译非常相似的代码时,它可以完美运行.如何在 c++ 中使用 pthread
..
当我尝试编译它时,我收到一个特定的错误.但是,这是不可能的,因为我使用了正确的标志.在 server.c 中有库 pthread.h.那么,我该如何解决我的链接问题?我正在使用 Linux(Ubuntu). 制作gcc -c -Wall -Wunused -ansi -pedantic -ggdb -o Server1.o Server.cgcc -c -Wall -Wunused -ansi
..
用于线程优先级的 pthread api 非常晦涩难懂,不仅难以理解,而且在 android 上也无法使用. 那么,有没有办法降低或提高线程的优先级? int currentPolicy;结构 sched_param sched;状态 = pthread_getschedparam(pthread_self(), ¤tPolicy, &sched);printf("sche
..
我正在将中型 C++ 代码体移植到 Android NDK.不幸的是,pthreads 实现(无论如何,从 NDK v5 开始)是不完整的.具体来说,我们的应用程序依赖 pthread_cancel() 来终止工作线程.NDK 没有实现 pthread_cancel()!当工作线程正常响应时,还有其他明显的答案.但是在工作线程没有响应的情况下(例如无限循环),我怎样才能在不杀死整个进程的情况下取消
..
OpenSSL 文档声明它可以安全地用于多线程应用程序前提是至少设置了两个回调函数,locking_function 和 threadid_func.... 我编写了使用 OpenSSL API 的程序.此外,我知道如何使用 pthreads.但是,OpenSSL 文档是以手册的形式编写的,我看不到在多线程应用中使用 OpenSSL 时必须执行的操作的分步指南. 是否有关于在 pthr
..
pthread 和 fork w.r.t. 之间的基本区别是什么?在 linux 方面实施差异以及调度如何变化(是否有所不同?) 我在两个类似的程序上运行了 strace,一个使用 pthreads,另一个使用 fork,最后都使用不同的参数使 clone() 系统调用,所以我猜两者在 linux 系统上基本相同,但 pthreads 更容易在代码中处理. 谁能给个深刻的解释?
..