gpt4 book ai didi

c - 多线程-如果满足条件如何停止所有线程?

转载 作者:行者123 更新时间:2023-11-30 15:04:17 26 4
gpt4 key购买 nike

编辑:我不能使用互斥体或 sleep() 或任何类型的等待,因为我们对 C 中的线程相当陌生。

对于我的作业,我将使用线程制作一个暴力密码破解器。我的想法是,我有密码的哈希值和盐,因此我使用字母表 A-Z、a-z、0-9 的组合,并使用 crypt_r 函数对其进行加密,并将其与我拥有的哈希值和盐进行比较。

我创建了 2 个线程,一个仅检查小写字母,第二个线程检查字母表中的所有字母。

我的问题是,一旦小写线程找到密码,它就会给出密码,但第二个线程继续在后台运行。

如何在不使用任何全局变量的情况下停止第二个线程?

以下是我如何处理线程连接:

for (int i = 0; i < nbThread; ++i) {
pthread_join(tabThread[i], NULL);
pthread_join(tabThread2[i], NULL);
}

感谢您的时间和帮助!

最佳答案

那么你有pthread_cancel这是告诉线程该退出的好方法。线程需要意识到取消的可能性,并适本地处理它。

然后你就可以用 pthread_killl 来杀死线程,这种方法一点也不好。 。请注意,使用 pthread_kill 可能会导致资源泄漏。

关于c - 多线程-如果满足条件如何停止所有线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40344598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com