在C语言中使用多线程进行线性搜索

在c语言中使用多线程进行线性搜索

这里我们将看到如何应用多线程概念来搜索数组中的一个元素。这里的方法非常简单。我们将创建一些线程,然后将数组分成不同的部分。不同的线程会在不同的部分进行搜索。之后,当找到该元素时,启用标志来识别该元素。

示例

#include #include #define MAX 16#define THREAD_MAX 4int array[MAX] = { 1, 5, 7, 10, 12, 14, 15, 18, 20, 22, 25, 27, 30, 64, 110, 220 };int key = 18;int flag = 0; //flag to indicate that item is found in the array or notint current_thread = 0;void* ThreadSearch(void* args) { //This is linear search function. It will be running using all threads   int num = current_thread++;   for (int i = num * (MAX / 4); i < ((num + 1) * (MAX / 4)); i++){      if (array[i] == key)         flag = 1; //set flag if key is found   }}int main() {   pthread_t thread[THREAD_MAX];   for (int i = 0; i < THREAD_MAX; i++) { //create multiple threads      pthread_create(&thread[i], NULL, ThreadSearch, (void*)NULL);   }   for (int i = 0; i < THREAD_MAX; i++) {      pthread_join(thread[i], NULL); //wait untill all of the threads are completed   }   if (flag == 1)      printf("Key element is found

"); else printf("Key element is not present

");}

输出

$ gcc 1249.Thread_search.cpp -lpthread$ ./a.outKey element is found

以上就是在C语言中使用多线程进行线性搜索的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:37:42
下一篇 2025年12月13日 19:38:37

相关推荐

  • 在C语言中编写一个打印金字塔图案的程序

    程序说明 金字塔是通过连接多边形底面和称为顶点的点形成的多面体。每个底边和顶点形成一个三角形,称为侧面。它是一个底面为多边形的圆锥体。具有 n 边底的金字塔有 n + 1 个顶点、n + 1 个面和 2n 个边。所有金字塔都是自对偶的。 算法 Accept the number of rows fr…

    2025年12月17日
    000
  • C++程序计算1到N之间所有奇数的和

    在我们学习编程和逻辑构建时,获取级数和是最简单的练习任务之一。在数学中,有一些方法可以找到不同级数中存在的级数之和。在编程中,我们通过实现逻辑将它们一一生成,并重复将它们相加以获得总和,否则根据需要执行任何其他操作。在本文中,我们将介绍使用 C++ 获取 N 以内所有奇数之和的技术。 有两种可能的方…

    2025年12月17日
    000
  • 有关C编程的有趣事实

    在这里我们将看到一些有关 C 编程的有趣事实。如下所示。 有时某些 switch 语句的 case 标签可以放在 if-else 语句内。 示例 #include main() { int x = 2, y = 2; switch(x) { case 1: ; if (y==5) { case 2:…

    2025年12月17日
    000
  • 在C语言中,嵌套函数

    在一些应用程序中,我们发现有些函数是在另一个函数内部声明的。这有时被称为嵌套函数,但实际上这不是嵌套函数。这被称为词法作用域。在C中,词法作用域无效,因为编译器无法找到内部函数的正确内存位置。 嵌套函数定义无法访问周围块的局部变量。它们只能访问全局变量。在C中,有两个嵌套作用域:局部和全局。因此,嵌…

    2025年12月17日
    000
  • 如何在C语言中将整个结构作为参数传递给函数?

    有三种方法可以将结构的值从一个函数传递到另一个函数。它们如下所示: 将单个成员作为参数传递给函数。 将整个结构作为参数传递给函数。 将结构的地址作为参数传递给函数。 立即学习“C语言免费学习笔记(深入)”; 现在让我们看看如何将整个结构作为参数传递给函数。 在函数调用中给出结构变量的名称作为参数。 …

    2025年12月17日
    000
  • 打印给定数字的乘法表在C中

    程序描述 打印给定数字的乘法表 算法 接受用户提供的任何需要形成乘法的数字 从 I 的值开始乘以给定数 (=1) 将给定数与 I 的值递增,直到 I 值小于或等于12. 示例 /* Program to print the multiplication table of a given number…

    2025年12月17日
    000
  • 编写一个在C语言中打印数字模式的程序

    程序说明 数字模式是根据称为模式规则的规则创建的数字序列。模式规则可以使用一个或多个数学运算来描述序列中连续数字之间的关系。 模式示例 模式 1 12 63 7 104 8 11 135 9 12 14 15 模式 2 1 1 2 3 1 2 3 4 5 1 2 3 4 5 6 71 2 3 4 5…

    2025年12月17日
    000
  • C语言中的嵌套结构是什么?

    结构内的结构(或)嵌套结构 另一个结构内的结构称为嵌套结构。 考虑以下示例, > struct emp{ int eno; char ename[30]; float sal; float da; float hra; float ea;}e; 所有属于配额的项目都可以组合在一起并在子结构下申…

    2025年12月17日
    000
  • C++程序检查字符串是否严格按字母顺序排列

    假设我们有一个包含 n 个小写字母的字符串 S。如果字符串遵循以下规则,则它是严格的字母字符串 – 将空字符串写入 T 然后执行下一步n次; 在第i步,取出拉丁字母表中的第i个小写字母,并将其插入到字符串 T 的左侧或字符串 T 的右侧(c 是拉丁字母表中的第 i 个字母)。 我们必须检…

    2025年12月17日
    000
  • 在C语言中,条件编译是什么意思?

    在C编程语言中,有几个指令控制程序代码的选择性编译。它们如下所示 − #if#else#elif#endif #if的一般形式如下 − #if constant_expression statement sequence#endif #else的工作方式与C关键字else类似。 #elif表示“el…

    2025年12月17日
    000
  • 在C语言中编写的斐波那契数列程序

    给定’n’个数字,任务是生成从0到n的斐波那契数列,其中整数的斐波那契数列形式为 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 其中,整数0和1将有固定的空格,然后添加两位数字,例如, 将原文翻译为中文后,保留HTML代码如下: 其中,整数0和1将有固定的空…

    2025年12月17日
    000
  • 在C语言中解释归并排序技术

    排序是将元素按升序(或)降序排列的过程。 排序的类型 C 语言提供了五种排序技术,如下 – 冒泡排序(或)交换排序选择排序插入排序(或)线性排序快速排序(或)分区交换排序归并排序(或)外部排序 归并排序 归并排序是分而治之方法。它将数组分成两半,递归地征服并合并(组合)。 让我们考虑下面…

    2025年12月17日
    000
  • 使用C语言找到给定二进制数的2的补码

    考虑下面给出的示例 – 示例 输入如下: 输入二进制数:10010001 输出如下: 立即学习“C语言免费学习笔记(深入)”; 1 对 10010001 的补码是 01101110 2 对 10010001 的补码是 01101111 算法 参考一种算法来查找给定二进制数的 2&#821…

    2025年12月17日
    000
  • 在C++中,将满足数字之和为十的第n个数字进行翻译

    各位数字和等于10的数字有 19、28、37、46、55、64、73、82、91等, 如果你观察这个数列,每个数字都加9。在上面的序列中,在加9的过程中,有一些数字的数字和不等于10。但是,你会得到所有数字和等于10的数字。 因此,我们可以有一个循环,以 9 递增并检查数字总和并找到第 n 个数字。…

    2025年12月17日
    000
  • 使用C++编写,找到以1开头的二进制字符串的唯一排列数量

    在给定的问题中,我们得到一个由0和1组成的字符串;我们需要找到以1开头的所有排列的总数。由于答案可能是一个巨大的数字,所以我们将其取模1000000007后输出。 Input : str =”10101001001″Output : 210Input : str =”101110011″Output…

    2025年12月17日
    000
  • 在C语言中,出现多次的数组元素是什么?

    Array是一个容器,其中包含相同数据类型的元素,长度需要事先定义。数组中的元素可以以任何顺序和任意次数出现。因此,在这个程序中,我们将找出数组中出现多次的元素。 问题描述 – 我们已经给出一个数组arr[],我们需要找出数组中重复出现的元素,并打印它们。 让我们举一个例子来更好地理解。…

    2025年12月17日
    000
  • c语言random函数怎么用

    c语言random函数用法:1、random.random,随机生成(0,1)之间的浮点数;2、random.randint,随机生成在范围之内的整数,两个参数分别表示上限和下限;3、random.randrange,在指定范围内,按指定基数递增的集合中获得一个随机数;4、random.choice…

    2025年12月17日
    000
  • 在C++中,通过执行给定的操作将一个数字减少到1

    给定一个整数作为输入。目标是找到将输入 Number 减少到 1 所需的最小步骤或操作数。可以执行的操作将是 -: If Number是偶数,则将其除以 2。 如果 Number 是奇数,则将其递增或递减 1。 示例 输入− 数字=28 立即学习“C++免费学习笔记(深入)”; 输出− 将 28 减…

    2025年12月17日
    000
  • 计算C语言中没有连续1的二进制字符串的数量

    给定的任务是计算长度为 n 的所有二进制字符串中没有连续 1 的数量。 二进制数字系统是数字表示技术的一种。它在数字系统中最流行和使用。二进制系统用于表示二进制量,该二进制量可以由任何仅具有两种操作状态或可能条件的设备来表示。例如,开关只有两种状态:打开或关闭。 在二进制系统中,只有两个符号或可能的…

    2025年12月17日
    000
  • 在C语言中编写一个程序,用于检查一个字符串是否包含任何特殊字符

    给定一个字符串 str[],任务是检查字符串是否包含任何特殊字符,如果字符串有特殊字符,则打印“字符串不被接受”,否则打印“字符串被接受”。 特殊字符是那些既不是数字也不是字母的字符,即 – !@#$%^&*()+=-][‘;/.,{}|:”?`~ 因此,在C编程语言…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信