多线程切割查找
2016-01-17 20:32
274 查看
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #include <process.h> #include <Windows.h> struct findInfo { int *pstart;//首地址 int length; int findNum;//要查找的数据 int id;//编号 }; int flag = 1; void findIt(void *p) { if (flag == 1) { findInfo *ps = (findInfo *)p; printf("\n线程:%d开始查找", ps->id); //遍历首地址,长度10个元素 for (int *pf = ps->pstart; pf < ps->pstart + ps->length; pf++) { if (*pf == ps->findNum)//相等 { printf("\n线程%d结束查找,找到数据%d地址%p", ps->id, *pf, pf); flag = 0; return; } } printf("\n线程:%d结束查找,没有找到", ps->id); } else { printf("\n其他线程已找到,结束查找"); } } void main() { int a[100] = { 0 }; time_t ts; unsigned int data = time(&ts); srand(data); for (int i = 0; i < 100; i++) { a[i] = rand() % 100; printf("%4d", a[i]); if ((i + 1) % 10 == 0) { printf("\n"); } } int num; scanf("%4d", &num); struct findInfo info[10];//结构体数组 for (int i = 0; i < 10; i++) { info[i].pstart = a + 10 * i; info[i].length = 10; info[i].id = i; info[i].findNum = num; HANDLE hd = (HANDLE)_beginthread(findIt, 0, &info[i]); WaitForSingleObject(hd, INFINITE);//线程等待,一个一个执行 } system("pause"); }
相关文章推荐
- LeakCanary开源项目(使用及原理github项目文档的翻译)
- Ionic build android Error code 1
- 安卓开发环境的配置
- clear(), evict(), flush()三种方法的用法实例
- Android客户端和服务端如何使用Token和Session
- java函数重载
- Linux内核构建系统之七
- webservice学习
- redis和phpredis扩展的安装
- SqlServer中decimal(numeric )、float 和 real 数据类型的区别
- Redis源码解析:03字典
- 动态规划-最长公共子序列
- android网络编程 一(HttpURLConnection)
- Android中的Http通信(四)之多线程下载数据
- [leetcode]Find Peak Element
- (重点章节复习以及代码调整笔记)选择器:伪类和伪元素选择器(部分)
- UltraEdit 脚本 实现查找替换
- 【Tyvj1359】收入计划
- 百度贴吧走的太快 规则掉队值得深思
- hdu 4010