问题标签 [pthread-join]

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 投票
1 回答
683 浏览

c - C中的多线程密码检查器

目前正在尝试使用pthread_createpthread_joinpthread_exit和让该程序使用多线程pthread_self。然后我打算crypt_rcrypt我的代码中使用。

它最多只能有 8 个线程,但我什至不知道如何开始使用两个线程。我只有一行声明pthread_t t1,t2,t3,t4,t5,t6,t7,t8.

这些计划是将它们放入pthread_create但除了初始化这些值之外,我不知道从这里去哪里。

我知道 pthread_create 的输入类似于pthread_create(t1, NULL, ... , ...)但我不知道如何进行第三个输入或第四个输入甚至是什么。然后,我必须确保根据命令行 arg 指定的线程数拆分每个线程正在检查的字母范围。到目前为止,我将其设计为仅在一个线程上工作,并计划将其移至crypt_r多线程...

我真的很困惑如何才能完成这项工作。如果可能的话。

我知道某种 void 函数是pthread_create.. 的第三个条目,但该函数必须是我的 passwordChecker 吗?或者是什么?

使用 malloc 的结构

0 投票
5 回答
8187 浏览

c - 如何从 pthread_join() 获取错误代码?

以下代码无法加入 pthread,并打印消息“加入失败”。如何获得有关故障及其原因的更多信息?

编辑:实际上加入返回no error,我犯了一个错误。if 语句不应该有,!因为如果存在评估为 true 的问题,则 join 返回一个非零数字。

0 投票
1 回答
345 浏览

c - pthread_join() 会导致顺序执行吗?

当我使用 pthread_join() 时,我不确定它是否在正确的位置。就像现在一样,它会在再次迭代循环之前等待线程退出吗?我想我要问的是我应该将它从双 for 循环中取出并在 pthread_join() 之后直接创建一个新的 for 循环吗?

PS:我对一般线程和 C 语言非常陌生。我还有另一个关于释放 malloc 东西的问题(在代码中作为注释)。我不确定在哪里使用 free 关键字,因为 malloc 结果指针在内部 for 循环的每次迭代后都消失了。

这是我的代码。它用于在两个预定义矩阵 (A&B) 上进行矩阵乘法。(这就是老师希望我们这样做的方式)。

0 投票
2 回答
67 浏览

c - 多线程消息同步

我需要在 C 的每个线程中打印 2 条消息并同步它们。

一个线程打印 One,第二个线程打印 Two。

所以我的代码是这样的

问题是随机打印一和二,但并不总是按这个顺序。我想让它总是在一个之后打印。我对 join 命令有点困惑。

提前致谢!

0 投票
2 回答
1561 浏览

c - 分段错误加入线程号 5 (pthread_join)

我正在尝试解决同步的一个小问题。但是当我加入线程时,我得到了第五次迭代的段错误!如果我只创建 4 个线程就完美了。

在这里,我将代码留下一些关于如何处理线程的基础知识。

运行:./work -h 4 -e 0 -b 1

他们运行:./work -h 5 -e 0 -b 1

如果他们将“-h”的值增加超过 4,则会收到分段错误

为什么这个?

0 投票
1 回答
639 浏览

multithreading - 线程连接永远等待:连接挂起或永远等待

我有如下代码

我正在尝试优雅地退出该过程。但问题是我很少看到该程序在加入时挂起。

线程在无限 while 循环中仍然处于活动状态。即使在调用 stop 之后 m_alive 值也是“true”(在 stop 中将其设置为 false)。m_alive 被声明为 volatile。

0 投票
2 回答
22124 浏览

c - pthread_join 的分段错误

因此,当我运行我的代码时,我在 pthread_join 处遇到了分段错误。在我的 pthread_join 之后有一个打印语句没有运行。有谁知道为什么?你能给我一些关于如何解决这个问题的提示或想法吗?

输出打印出我的矩阵的所有行号,直到结束,然后它离开 matrixCalc 函数并打印“创建线程后”。当我为 1 个线程输入参数时,就会发生这种情况。

我在这里包含了一小部分代码:

这是矩阵计算函数:

0 投票
2 回答
13612 浏览

c - C - 创建 n 个线程

我正在研究以下功能。这个函数应该创建 n 个线程。它还应该打印子线程的 tid。但此刻我有点困惑。当我执行它时,例如我创建了 5 个线程,它总是返回相同的 tid。据我了解,tid 是调用者的线程 ID。是同一个调用者调用所有这些线程还是我做错了什么。这是代码:

例如,对于以下输入spawnThreads(4) ,我得到 以下输出:

总而言之,该函数应该打印>i< >tid<>tid<表示孩子的 TID,>i<从 1 运行到 n。

但是为什么我会得到四次相同的 tid?我做错了什么?如果有人可以解释我出了什么问题,我将不胜感激。

0 投票
0 回答
620 浏览

c - pthread_join 段错误

我正在使用 pthreads 进行并行排序。目前,我正在使用 4 个线程,而且我刚刚开始,所以现在没有线程访问相同的全局位置。(我已经全局声明了两个变量,变量是大数组,我确保没有两个线程访问同一个索引。)

在 AASort 内部,我调用了另一个函数。如果我不调用 AASort 函数中的任何函数,则此代码有效。

0 投票
3 回答
153 浏览

c - 如何知道 pthread_cond_signal 释放了哪个线程

干杯,

我有 2 个线程导致逻辑死锁 => d_santa 和 d_patuljak(抱歉,有些文章是用克罗地亚语写的,我没有时间翻译)

d_santa 这样做

和 d_patuljak 这样做

如果有帮助,这里还有 d_sob

任务: d_santa 只创建一次,并且在 d_patuljak 不断创建时始终保持睡眠或做一些“有用”的事情,当创建第 3 组时,他们唤醒圣诞老人,以便他可以帮助他们解决所有问题(请注意,如果 d_patuljak 快速创建patuljaks 可以超过 3 个,但圣诞老人只需要 3 个一组!!)。与 sob 类似,它们会不断被创建,直到达到 10 个之后才能被广播(不能有 11 个)

我的解决方案(想法):我将创建 1,2,3 个 patuljak,每个 patuljak 在数组中都有自己的位置。创建 patuljak 3 后,他将唤醒圣诞老人(也绕过 pthread_cond_wait)!圣诞老人会醒来并调用 3 个连续的 pthread_cond_signals 来释放 patuljak 1,然后是 patuljak 2,然后是 patuljak 3 => 注意:释放 patuljak 1 以结束他的线程,然后被我放置在 pthread_cond_signal 正下方的 pthread_join “销毁”!

问题:pthread_join(patuljak 1) 一直在等待 patuljak 1,这意味着 pthread_cond_signal 没有设法释放 patuljak 1(可能是 patuljak 2 或 3)?我不知道解决这个问题的方法有没有办法知道将发布什么或者如何准确地发布 patuljak 1、2、3?我会使用广播,但我不能发布 patuljak 4,圣诞老人应该只接受 3 组。编辑:我将 pthread_cond_signal 与 pthread_cond_broadcast 切换为 patuljaks 问题并没有消失。

无论如何,该程序比这要大得多,我有一个与raindeers(= sob)类似的问题,我可以并尝试广播,但他们也卡在pthread_join,我有一种感觉,如果patuljaks的问题得到解决,同样会遵循雨鹿(patuljak=>矮人)xd。