您的位置:首页 > 其它

多线程检索数组

2018-02-04 22:27 274 查看
#include <windows.h>
#include<stdio.h>
#include <stdlib.h>
#include <process.h>

int isfind = 0;//0-代表没有找到
int *pfind = NULL;//为null没有找到,否则就是地址

struct infostruct
{
int *pstart;//起始地址
int length;//长度
int findnum;//要寻找的数据
int id;//线程编号
};

void find(void *p)
{
struct infostruct *pinfo = (struct infostruct *)p;//获取参数地址
//检索指定的内容
printf("线程%d开始查找\n",pinfo->id);//
for (int *px = pinfo->pstart; px<pinfo->pstart+pinfo->length; px++)
{
if (isfind == 1)
{
printf("线程%d结束查找,其他线程已经找到\n", pinfo->id);
_endthread();
}
if (*px == pinfo->findnum)
{
pfind = px;//返回找到地址;
isfind = 1;//设置标识符找到
printf("线程%d结束查找,找到%d,%p\n", pinfo->id, *px, px);
_endthread();
}

}
}
void main()
{
int data[1000] = { 0 };
for (int i = 999; i>=0; i--)
{
data[i] = i;
}
struct infostruct myinfo[10];
for (int i = 0; i < 10; i++)
{
myinfo[i].pstart = data + i * 100;//设定地址
myinfo[i].length = 100;
myinfo[i].id = i;
myinfo[i].findnum = 767;
_beginthread(find, 0, &myinfo[i]);//多线程查找
}

system("pause");
}


列表内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: