多线程并行检索
来源:互联网 发布:电视点播软件哪个好 编辑:程序博客网 时间:2024/06/07 00:59
有时候查找的时候数据量很大的时候,可以开几个线程一起查找,这样就可以加快查找的速度,用一个简单的例子进行说明。
/************************************************************************//* 并行检索 *//************************************************************************/#include <windows.h>#include <process.h>#include <iostream>using namespace std;int isfind = 0 ;//0代表没有找到,1代表找到int *pfind = NULL ;//为null没有找到,否则为地址struct infostruct{ int *pstart ;//起始地址 int length ;//长度 int findnum ;//要寻找的数字 int id ;//线程编号};/*unsigned int WINAPI fun(void *p)*/void fun(void *p){ struct infostruct *info = (struct infostruct*)p ; cout<<"线程"<<info->id<<"开始查找!"<<endl ; for (int *px = info->pstart ; px < info->pstart + info->length ; px++) { if (isfind == 1) { cout<<"线程"<<info->id<<"结束查找,其他线程已找到"<<endl ; _endthread() ; } if (*px == info->findnum) //判断是否相等 { pfind = px ; isfind = 1 ;//设置标识符找到 cout<<"线程"<<info->id<<"找到"<<*px<<endl ; _endthread() ;//退出 } } cout<<"线程"<<info->id<<"没有找到"<<endl ;}void main(){ int data[1000] = {0} ; for (int i = 999; i >= 0 ; i--) { data[i] =i ; } struct infostruct inf[10] ; for(int i = 0 ; i< 10 ; i++) { inf[i].pstart = data + i * 100 ; inf[i].length = 100 ; inf[i].findnum = 767 ; inf[i].id = i ; // _beginthreadex(NULL , 0 , fun , &inf[i] , 0 , NULL) ; _beginthread(fun , 0 , &inf[i]) ; } system("pause") ;}
程序运行截图:
0 0
- 多线程并行检索
- Oracle并行检索
- 多线程并行下载,断点续传
- 多线程,并行,异步
- iOS多线程/并行开发
- 多线程以及并行开发
- Task 多线程 并行
- 多线程并行与退出
- 并行(多线程)
- 并行并发多线程
- 多线程检索数据
- 多线程检索文件
- java 并行与多线程区别
- 并行计算的多线程数据结构
- CPP多线程实现并行计算
- IOS多线程_并行开发
- 多线程的“并发”和“并行”
- 并行计算的多线程数据结构
- 【慕课笔记】第二章 变量和常量 第8节 JAVA中的强制类型转换
- 计算两个属性名称的相似度(毕设第一周2016.1.9)
- 最小周期串
- 几种语言的随机数生成算法
- Android Studio学习的工具 网站
- 多线程并行检索
- 现代操作系统——存储管理
- java中垃圾回收(gc)
- iframe去边框,无边框
- SNMP PDU解析
- 二进制数的运算方法
- 关于MAC下Android SDK manager 更新解决办法(无需翻墙)
- VirtualBox Unable to load R3 module 问题解决方案
- iOS 关于颜色的库 - Wonderful