【已解决】C语言实现多线程检索数据

本博文源于笔者正在学习的c语言。学习如何用多线程进行检索数据。这里以检索一个数组的数据为例,给出代码,并分析如何进行线程通信,如果检索到,其余就别检索了。

文章目录

    • 问题来源
    • 问题解决方案
    • 代码实现效果
    • 总结

问题来源

想要用多线程检索数据

问题解决方案

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
#include
int isfind = 0;
struct findinfo {
	int *pstart;
	int length;
	int findnum;
	int id;
};

void findit(void *p) {
	struct findinfo *ps = p;
	printf("\n线程%d开始查找", ps->id);
	for (int *pf = ps->pstart; pf < ps->pstart + ps->length; pf++) {
		if (isfind == 1) {
			printf("\n线程%d结束查找,其他线程已经找到", ps->id);
			return;
		}
		if (*pf == ps->findnum) {
			printf("线程%d,数据%d,地址%p", ps->id, *pf, pf);
			isfind = 1;
			return;
		}
	
	}
	printf("\n线程%d,结束查找", ps->id);

}
void main() {
	int a[10] = { 86,53,25,12,10,11,18,5,3,4 };
	for (int i = 0; i < 10; i++) {
		printf("%d ", a[i]);
	}

	printf("\n想要查找的数据是:");
	int num;
	scanf("%d", &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;
		_beginthread(findit ,0, &info[i]);

	}
	getchar();
	getchar();
}

代码实现效果

【已解决】C语言实现多线程检索数据_第1张图片

总结

这段代码效果,通过全局变量作为线程通信的变量,实现了,查找成功就不让其他线程查找了。值得收藏借鉴。

你可能感兴趣的:(课外学习cpp,c语言,算法,开发语言)