pthreads相关内容

找不到-lp线程

我正在尝试交叉编译Samba服务器。 ./config运行得很好,但当我想要使用make进行构建时,提示符是: Linking shared library bin/libsmbclient.so.0 /opt/qnx630/host/linux/x86/usr/bin/ntoarm-ld: cannot find -lpthread collect2: ld returned 1 e ..
发布时间:2022-08-03 10:36:18 其他开发

为什么GCC要求链接到p线程函数,而不需要参数来链接到其他函数?

如果我使用pTHREAD函数,则必须在GCC上使用&lpthread&qot;参数以确保正确链接。然而,为什么GCC在链接其他标准函数时不需要额外的参数?例如:printf、scanf、poix套接字等 推荐答案 在类Unix系统上,C库的某些部分历来是在单独的共享对象中实现的。编译器驱动程序(gcc)只与-lc(和动态加载器)隐式链接,而不是这些其他共享对象,例如-lm(数学库)、- ..
发布时间:2022-04-15 20:31:30 其他开发

使用c++中的互斥执行多线程,一次运行一个线程。

我有一个100请求(整数)数组。我想创建4个线程并调用一个函数(THREAD_Function),并使用此函数希望每个线程逐个接受请求: (thread0->;quest0, 线程1->;请求1, 线程2->;请求2, 线程3->;请求3 然后thread0->;请求4直到100),所有这些都是通过使用互斥锁来实现的。 以下是我到目前为止编写的代码 ..
发布时间:2022-04-08 23:04:27 服务器开发

在C++中终止线程

我有一个调用线程的C程序。 iret1 = pthread_create( &thread1, NULL, readdata, NULL); iret2 = pthread_create( &thread2, NULL, timer_func, NULL); pthread_join(thread2, NULL); 线程%2在执行某个函数后返回,之后我想停止线程%1的执行。我应该怎么做? ..
发布时间:2022-02-26 18:36:38 其他开发

线程池应该如何在C中实现?

我使用的是C++编程,但我只使用pthread.h,没有Boost或C++11线程。 所以我尝试使用线程,但基于我前面的一个问题(link),这似乎不可行,因为线程在完成任务后立即终止,使用线程池实现的一个更普遍的原因是通过将这些线程重用于多个任务来减少线程创建开销。 那么,使用fork()并创建从主进程到子进程的管道是用C实现此功能的唯一其他方式吗?或者有没有办法在我不知道的线程和其父线 ..
发布时间:2022-02-26 18:34:52 C/C++开发

如何将gdb调试限制为一次只能调试一个线程

我希望通过控制哪些线程在何时执行来调试多线程程序。我使用的是C++和gdb。除了主线程(对于示例程序),我还有两个线程,我想调试一个线程,同时保持另一个线程停止。 以下是我编写的示例程序: #include #include #include #define NUM_THREADS 2 using namespac ..
发布时间:2022-02-26 18:33:30 其他开发

如果我在进程中执行sched_setapherity,由它派生的线程是否会受到影响

如果我对CPU0执行以下操作:createThread,setsched_apherency,那么所有线程是否也与CPU0有亲和力 如果相反,我颠倒了操作顺序,即先设置_调度亲和性,然后创建线程,线程是否具有亲和性 我正在使用pthread库创建线程。感谢您的回复 linux sched_setaffinity()调用特定于推荐答案,因此此答案适用于此。 对sched_seta ..
发布时间:2022-02-26 18:31:30 其他开发

如何随时暂停 pthread?

最近我开始着手将 ucos-ii 移植到 Ubuntu PC. 我们知道,在 ucos-ii 中通过简单地在 pthread 的回调函数中的“while"循环中添加一个标志来执行暂停和恢复是不可能的(如下面的解决方案).因为ucos-ii中的“进程"可以随时暂停或恢复! 如何休眠或暂停 PThreadLinux 上的 c 语言 我在下面的网站上找到了一种解决方案,但由于它已过时而 ..
发布时间:2022-01-25 12:07:27 服务器开发

在 g++ 中是在后台使用 pthreads 的 C++ 11 线程模型吗?

我只是在尝试g++ 4.6 和C++11 功能.每次我使用 -std=c++0x 标志编译一个简单的线程代码时,它要么因分段错误而崩溃,要么只是抛出一些奇怪的异常. 我阅读了一些与 C++11 线程相关的问题,我意识到,我还需要使用 -pthread 标志来正确编译代码.使用 -pthread 工作正常,我能够运行线程代码. 我的问题是,C++11多线程模型是否在后台使用Pthread ..
发布时间:2022-01-23 20:33:25 C/C++开发

对 pthread 互斥体所涉及的完整内存屏障的说明

我听说在处理互斥体时,必要的内存屏障由 pthread API 本身处理.我想了解有关此事的更多详细信息. 至少在最常见的架构上,这些说法是否属实? 编译器是否识别此隐式屏障,并在生成代码时避免重新排序操作/从本地寄存器读取? 什么时候应用内存屏障:成功获取互斥锁后和释放后? 解决方案 POSIX 规范列出了必须"与其他线程同步内存",包括pthread_mutex_lock() ..
发布时间:2022-01-22 20:36:00 其他开发

修改数组的一个元素而另一个线程修改同一数组的另一个元素是明确定义的行为吗?

给定一个 foo_t[n] 类型的数组和一组 n 个线程,其中每个 n 个线程读取并修改一个数组的不同元素,我是否需要显式同步数组的修改,或者我可以假设同时修改数组的成员是明确定义的行为?foo_t 有多大/它有什么对齐方式是否重要? 解决方案 我尝试做的是明确定义的行为. 参见 ISO/IEC 9899:2011 §5.1.2.4.27: 注意 13 将分配引入到可能不会被抽 ..
发布时间:2022-01-22 20:14:56 其他开发

Linux 与 FIFO 等待队列同步

在等待队列为 FIFO 的 Linux 中是否有锁?这似乎是一件很明显的事情,但我刚刚发现 pthread 互斥锁不是 FIFO,信号量显然也不是 FIFO(我正在研究内核 2.4(作业))...... Linux 是否有一个带有 FIFO 等待队列的锁,或者有没有一种简单的方法可以使用现有的机制来实现? 解决方案 这是一种基于 pthreads 原语创建简单排队“票证锁"的方法.它 ..
发布时间:2022-01-22 20:10:22 服务器开发

对于缓冲区溢出,使用 pthread 时的堆栈地址是什么?

我正在学习计算机安全课程,并且有一个额外的学分分配将可执行代码插入缓冲区溢出.我有我正在尝试操作的目标程序的 c 源代码,并且我已经到了可以成功覆盖当前函数堆栈帧的 eip 的地步.但是,我总是遇到分段错误,因为我提供的地址总是错误的.问题是当前函数位于 pthread 内部,因此,堆栈的地址似乎总是在程序的不同运行之间发生变化.是否有任何方法可以在 pthread 中查找堆栈地址(或用于估计 p ..
发布时间:2022-01-22 12:59:09 其他开发

GCC - 如何重新对齐堆栈?

我尝试构建一个使用 pthreads 和 __m128 SSE 类型的应用程序.根据 GCC 手册,默认堆栈对齐是 16 个字节.为了使用__m128,要求是16字节对齐. 我的目标 CPU 支持 SSE.我使用不支持运行时堆栈重新对齐的 GCC 编译器(例如 -mstackrealign).我不能使用任何其他 GCC 编译器版本. 我的测试应用程序如下所示: #include ..
发布时间:2022-01-22 12:30:57 其他开发

Linux进程的堆栈大小与pthread、fork和exec有什么关系

我有一个关于 Linux 上进程的堆栈大小的问题.这个堆栈大小是否在链接时确定并在 ELF 文件中编码? 我写了一个程序,通过 打印它的堆栈大小 pthread_attr_getstacksize(&attr, &stacksize); 如果我直接从 shell 运行这个程序,它会给出大约 10MB 的值.但是当我从属于多线程程序的线程中 exec 时,它给出的值约为 2MB. ..
发布时间:2022-01-22 12:21:54 服务器开发

事件/任务队列多线程 C++

我想创建一个可以从多个线程调用其方法的类.但不是在调用它的线程中执行该方法,而是应该在它自己的线程中执行它们.不需要返回结果,也不应该阻塞调用线程. 我在下面包含的第一次尝试实现.公共方法将函数指针和数据插入到作业队列中,然后工作线程将拾取该作业队列.然而,它并不是特别好的代码,而且添加新方法很麻烦. 理想情况下,我想将其用作基类,我可以轻松地添加方法(具有可变数量的参数),同时减少麻 ..
发布时间:2022-01-21 12:15:13 C/C++开发

C中的多写线程安全队列

我正在使用 pthreads 开发一个多线程 C 应用程序.我有一个写入数据库的线程(数据库库只能在单个线程中安全使用),还有几个线程正在收集数据,处理它,然后需要将结果发送到数据库线程进行存储.我在提到过在 C 中创建一个多写入器安全队列是“可能的",但是我看到的每个地方都只是说它“对于这个例子来说太复杂了"并且仅仅演示了一个单写入器安全队列. 我需要以下东西: 高效插入和移除.我假 ..
发布时间:2022-01-21 11:36:48 其他开发