1. //仅供参考学习
  2.  
  3. 1 #define _CRT_SECURE_NO_WARNINGS //屏蔽 vs 的a
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <windows.h>
  7. #include <process.h>
  8. #include <time.h>
  9. #include <memory.h>
  10.  
  11. //直接改 m_MAX 的值则是改变总的范围
  12. #define m_MAX 250000 //最好是 totalThread 的整数倍
  13.  
  14. typedef struct s{
  15. int *begin;//每个线程其实索引地址
  16. int lenth;//索引长度
  17. int target;//need find
  18. int Id;//thread id
  19. int *flag;//线程之间通信
  20. int *isFind;//附加功能标记那个线程找到的
  21. }s_t;
  22.  
  23. void find(void *p)
  24. {
  25. s_t* pS = (s_t*)p;//indo
  26.  
  27. int* cur = NULL;//need find number addres
  28.  
  29. for (cur = pS->begin; cur != pS->begin + pS->lenth; ++cur)
  30. {
  31. if ( == *(pS->flag))
  32. {
  33. char str[] = { };
  34. sprintf(str, " thread %d incapable been thread %d Preemptive\n", pS->Id, *(pS->isFind));
  35. printf("%s", str);
  36. _endthread();
  37. }
  38. if ((*cur) == pS->target)
  39. {
  40. printf(TEXT("thread %d finde \n"), pS->Id);
  41. printf(" %d\n", *cur);
  42. Sleep();
  43. *(pS->flag) = ;
  44. *(pS->isFind) = pS->Id;
  45.  
  46. _endthread();
  47. }
  48. }
  49. {//快语句 看起来 代码整洁
  50. char str[] = { };
  51. sprintf(str, " Thread %.5d is incapable \n", pS->Id, *(pS->isFind));
  52. printf("%s", str);
  53. }
  54.  
  55. _endthread();
  56. }
  57.  
  58. int main()
  59. {
  60. srand((unsigned int)time(NULL));
  61.  
  62. //需要寻找的源
  63. int array[m_MAX];
  64.  
  65. //标志位
  66. int flag = ;
  67. int isFind = ;
  68.  
  69. //随机的目标
  70. int target = rand() % m_MAX;
  71. printf("Need find number is %d \n", target);
  72.  
  73. int totalThread = ;
  74.  
  75. //线程需要的信息
  76. s_t s[]; //设定线程个数 ## 这里的 50 与 totalThread 变量是相关的 要改都改
  77.  
  78. int dividedDataSize = (m_MAX / totalThread); //设定每个线程需要索引的大小
  79.  
  80. //随机初始化 源内的数据
  81. for (int j = ; j < m_MAX; ++j) {
  82. array[j] = rand()%m_MAX;
  83. }
  84.  
  85. //初始化每个线程
  86. for (int i = ; i < totalThread; ++i)
  87. {
  88. s[i].begin = array + (i*dividedDataSize);
  89. s[i].Id = i;
  90. s[i].lenth = (dividedDataSize);
  91. s[i].target = target;
  92. s[i].flag = &flag;
  93. s[i].isFind = &isFind;
  94. _beginthread(find, , &s[i]);
  95. Sleep();  //避免出现线程访问冲突
  96. }
  97.  
  98. system("pause");
  99. return ;
  100. }

结语:有问题欢迎提在下方 ,本人在校学生,时间较为充裕, 有时间会回复的。

记一次 c 语言 的 多线程查找 简单实现的更多相关文章

  1. [R语言]R语言使用多线程对数据库进行大批量访问时出现无法连接问题

    问题描述: 在R中使用多线程对数据库进行写入,在服务器端运行脚本(linux环境),总是在第6-7万个任务线程时,出现无法连接到数据库的问题.任务中断,错误信息为task 6xxxx failed,C ...

  2. swift语言之多线程操作和操作队列(下)———坚持51天吃掉大象(写技术文章)

    欢迎有兴趣的朋友,参与我的美女同事发起的活动<51天吃掉大象>,该美女真的很疯狂,希望和大家一起坚持51天做一件事情,我加入这个队伍,希望坚持51天每天写一篇技术文章.关注她的微信公众号: ...

  3. c语言下多线程

    原文:c语言下多线程 [问题]创建了10个线程,10个线程公用一个线程体,创建如下: int t1=0,t2=1,t3=2,t4=3,t5=4,t6=5,t7=6,t8=7,t9=8,t10=9; i ...

  4. Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步

    Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步 一.概述     PV操作是对信号量进行的操作.     进程同步是指在并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消 ...

  5. C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

    C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...

  6. C语言程序设计:模拟简单运算器的工作

    目录 C语言程序设计:模拟简单运算器的工作 1.题目 2.分析 3.代码实现 4.结尾 C语言程序设计:模拟简单运算器的工作 1.题目 ​ 模拟简单运算器的工作,输入一个算式(没有空格),遇等号&qu ...

  7. c语言经典算法——查找一个整数数组中第二大数

    题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...

  8. Rust语言的多线程编程

    我写这篇短文的时候,正值Rust1.0发布不久,严格来说这是一门兼具C语言的执行效率和Java的开发效率的强大语言,它的所有权机制竟然让你无法写出线程不安全的代码,它是一门可以用来写操作系统的系统级语 ...

  9. 基于JAVA语言的多线程技术

    1.简介 多线程技术属于操作系统范围内的知识: 进程与线程 可以这么理解,一个应用程序就是一个进程,在一个进程中包含至少一个线程:进程就是线程的容器,真正工作.处理任务的是线程. 进程是操作系统分配资 ...

随机推荐

  1. angular开发环境搭建及新建项目

    最近一个星期准备学习一下angular前端框架,因为之前在学习abp框架的时候,都要求前端要掌握angular,所以不得不回来恶补一下了,学习的过程有时间的话会记录在这里,方便以后复习. 闲言少叙,下 ...

  2. 简单地做一下“回到顶部”按钮,用jQuery实现其隐藏和显示

    1.首先,我们要准备HTML代码: <div id="return-top"> <a href="#top">返回顶部</a> ...

  3. mssql sqlserver 给已存在表添加新的字段及字段备注的方法

    转自:http://www.maomao365.com/?p=8102 摘要: 下文讲述向已存在表上添加新字段及字段备注的方法,如下所示: 实验环境:sql server 2008 R2 1. 添加新 ...

  4. kali linux中的yum、rpm常见的问题

    事件起因:今天我在kali里面使用yum命令来部署Linux环境时,出现了错误: bash:yum command not found,然后就百度,找到一片好的文章,链接:http://www.pia ...

  5. node项目自动化部署--基于Jenkins,Docker,Github(1)安装Jenkins

    前言 每次项目代码更新后都要重新部署,如果只有一台服务器还好. 但是如果是分布式系统,动不动就很多台服务器,所以代码的自动部署就显得十分重要了. 这里用几篇文章来记录一下如何使用Jenkins,Doc ...

  6. 在 ASP.NET Core 中集成 Skywalking APM

    前言 大家好,今天给大家介绍一下如何在 ASP.NET Core 项目中集成 Skywalking,Skywalking 是 Apache 基金会下面的一个开源 APM 项目,有些同学可能会 APM ...

  7. PHP mysql查询工具

    PHP基于PDO的 mysql 查询工具 单页面实现,将页面放在任意目录即可. 访问用户 admin 密码 password 代码很简单,主要为了在没有phpMyAdmin时方便执行SQL. 效果如下 ...

  8. 一行命令更新所有 npm 依赖包

    npm 包的更新速度很快,为了将项目或者全局依赖更新到最新版本.传统的做法是一个一个更新,比如更新 react 到最新版本,命令如下: # npm npm i --save react@latest ...

  9. RabbitMQ第一次不能正常读取第二次正常的问题

    1.利用rabbitmq导数据包,第一不能正常导入,第二次正常,第三次又出现问题,第四次又恢复正常的坑爹问题. 2.可访问rabbitmq注意消费者个数是否正常 有两个消费者,导致第一次消息被第一个消 ...

  10. Spring Cloud实战的代码和视频位置

    大家好,本博文的连接里包含了Spring Cloud实战的代码和视频位置. 代码下载连接: 视频下载连接: