pthreads相关内容

pthread 条件变量

我正在实现一个带有任务队列的线程.一旦第一个任务被添加到队列中,线程就会开始运行它. 应该使用pthread条件变量来唤醒线程还是有更合适的机制? 如果我在另一个线程没有被 pthread_cond_wait() 阻塞而是在做某事时调用 pthread_cond_signal(),会发生什么?信号会丢失吗? 解决方案 来自 pthread_cond_signal 手册: ..
发布时间:2021-06-23 18:33:42 其他开发

如何使用带有 pthreads 的线程池?

我有一个作业队列,我想创建一个包含四个线程的池,我可以在其中投放我的作业.我所困扰的是如何制作线程并在没有工作时保持它们暂停. 工作队列 |工作1 |工作2 |工作3 |工作4 |..线程池|线程1 |线程2 |线程3 |线程4 | 要创建我目前在初始化点拥有的线程: for (t=0; t 其中 num_of_threads=4 和 doSth2 是一个内部没有任何内容的函数.因此,一旦 ..
发布时间:2021-06-23 18:33:39 其他开发

Linux 上的最大套接字数

服务器似乎仅限于 ~32720 个套接字...我已经尝试了所有已知的变量更改来提高这个限制.但是服务器仍然限制在 32720 个打开的套接字,即使还有 4Go 的空闲内存和 80% 的空闲 cpu... 这里是配置 ~# ulimit -a核心文件大小(块,-c)0数据段大小(千字节,-d)无限制调度优先级 (-e) 0文件大小(块,-f)无限制待处理信号 (-i) 63931最大锁定内存 ..
发布时间:2021-06-23 18:33:36 其他开发

何时使用 pthread_cancel 而不是 pthread_kill?

什么时候使用 pthread_cancel 而不是 pthread_kill? 解决方案 这两个我都不会用,但这只是个人喜好. 在两者中,pthread_cancel 是终止线程的最安全方法,因为该线程仅在使用 pthread_setcancelstate(). 换句话说,它不应该在以可能导致死锁的方式持有资源的情况下消失.pthread_kill() 调用向特定线程发送信号, ..
发布时间:2021-06-23 18:33:33 其他开发

通过 pthread_create 传递整数值

我只是想将一个整数的值传递给一个线程. 我该怎么做? 我试过了: int i;pthread_t thread_tid[10];for(i=0; i 线程方法如下所示: void *collector( void *arg){int a = (int) arg;... 我收到以下警告: 警告:从指针转换为不同大小的整数 [-Wpointer-to-int-cast] ..
发布时间:2021-06-23 18:33:25 其他开发

pthread_create 并传递一个整数作为最后一个参数

我有以下功能: void *foo(void *i) {int a = (int) i;}int main() {pthread_t 线程;国际我;pthread_create(&thread, 0, foo, (void *) i);} 在编译时,有一些关于强制转换的错误((void *) i 和 int a = (int) i).如何正确传递一个整数作为 pthread_create 的最 ..
发布时间:2021-06-23 18:33:22 其他开发

打印主优先级

我想知道是否有办法打印主的优先级.在 this 问题中,我问了如何打印线程的默认优先级;现在我很想知道是否可以对 main 做同样的事情. 编辑:我的目标是获得我创建的唯一进程的优先级(我使用 pthread 库在 int 主块内创建线程).该进程不应该是一个正常进程,而是一个实时进程,所以我不能使用 getpriority 函数.它只能用于普通进程(来源:第 183 页,Robert Lo ..
发布时间:2021-06-21 19:52:52 其他开发

从 pthread_create 向线程函数传递多个参数

这是我第一次尝试在 C 中进行线程处理.我正在创建一个循环有界缓冲区.我知道如何创建线程,但我见过的所有示例都只有接受一个 void 参数的线程函数,但不幸的是,我的工人规范要求我使用三个,如下所示: void bufferRead(BoundedBuffer* buffer, char* data, int count) {pthread_mutex_lock(&buffer->mutexBu ..
发布时间:2021-06-18 20:18:14 其他开发

“非铸造"from (void *) 并取消对 char 数组的引用

我几乎完成了一项需要使用 pthread 的家庭作业.我已经弄清楚了pthreads.我剩下的唯一问题是弄清楚如何通过 pthread_create() 将多个参数传递给线程. 我需要向线程传递两个字符.我必须将它们强制转换为 (*void) 才能与 pthread_create() 一起使用.我可以传递它们,但我不知道如何从函数中的 *parameter 获取值. void *my_fu ..
发布时间:2021-06-18 20:02:57 C/C++开发

在 pthread_create() 中使用 locals 作为参数是否有效?

这主要是关于作用域和线程的问题.假设我们有以下结构. struct 测试{整数;std::string 名称;}; 此结构的一个实例将用作 pthread_create 函数中的参数.下面是这可能是什么样子的示例. pthread_t tid[5];for(int i = 0; i 这可以接受吗?由于 test 是在 for 的作用域中声明的,这意味着我们只能依赖它在 for 循环的单次 ..
发布时间:2021-06-18 20:00:26 C/C++开发

传递给函数的指针意外更改

我正在设计一个附加到 Pthreads 的基于预加载器的锁跟踪实用程序,但我遇到了一个奇怪的问题.该程序通过提供在运行时替换相关 Pthreads 函数的包装器来工作;这些做一些日志记录,然后将 args 传递给真正的 Pthreads 函数来完成工作.显然,它们不会修改传递给它们的参数.然而,在测试时,我发现传递给我的 pthread_cond_wait() 包装器的条件变量指针与传递给底层 P ..
发布时间:2021-06-18 19:54:36 C/C++开发

为什么这个程序的多线程版本更慢?

我正在尝试学习 pthreads,并且我一直在试验一个程序,该程序试图检测数组上的更改.函数 array_modifier() 选择一个随机元素并切换它的值(1 到 0,反之亦然)然后休眠一段时间(足够大所以不会出现竞争条件,我知道这是不好的做法).change_detector() 扫描数组,当一个元素与它的先前值不匹配且等于 1 时,检测到变化,并且 diff 数组用检测更新延迟. 当有 ..
发布时间:2021-06-15 19:43:44 其他开发

用于 PHP 无限循环的 Pthreads 与 Parallel

我正在寻找一种在 PHP 上执行多线程的方法,并遇到了 pthreads PHP API,我认为它很容易实现(但是我必须找出如何安装支持 ZTS 的 PHP 版本对于 Debian). 问题是,当我查看 pthreads php.net 文档时,我发现了这个: 提示考虑改用并行. 我不知道的. 我的目标是获得一个项目列表,并为每个项目打开一个 websocket,它永远监听 ..
发布时间:2021-06-14 18:52:23 PHP

对一个条件变量使用多个互斥锁

是否有一种机制可以让条件变量使用多个互斥锁?我在 Linux 中,在 C++ 中使用 pthreads. 在一个应用程序中,我需要通过 pthread_cond_wait() 原子地获取和释放两个互斥体(而不是一个),但该函数只接受一个. 我有一个名为 BlockingManager 的类,它有方法: blockMeFor( pthread_cond_t* my_cond, pthr ..
发布时间:2021-06-04 20:50:04 C/C++开发

调用相同函数时的线程问题

我正在尝试创建给定函数的 4 个实例,但无法确定被调用的函数如何知道哪个线程调用了它. 这是在我的头文件中: //GPIO PINS 存储在结构中,用于每个声波测距仪.typedef struct sonicPins {//左前引脚.int 触发器1;国际回声1;//右前引脚.int trig2;int echo2;//左后引脚.int trig3;int echo3;//右后引脚.int ..
发布时间:2021-06-04 20:48:11 其他开发