#include <Windows.h>
#include <stdio.h>
#include <iostream>
#include <time.h>
#define TEST_SIZE (1024*1024*200)
#define NUMBER 20
int total = 0;
typedef struct _search {
int* data;
size_t start;
size_t end;
size_t count;
} search;
DWORD WINAPI ThreadProc(void* lpParam)
{
search* s = (search*)lpParam;
time_t start, end;
printf("新的线程开始执行...\n");
time(&start);
for (int j = 0; j < 10; j++) {
for (size_t i = s->start; i < s->end; i++) {
if (s->data[i] == NUMBER) {
s->count++;
}
}
}
time(&end);
printf("查找数据所花时间: %lld\n", end - start);
return 0;
}
int main(void)
{
int* data = new int[TEST_SIZE];
for (int i = 0; i < TEST_SIZE; i++) {
data[i] = i;
}
search s1, s2;
int mid = TEST_SIZE / 2;
s1.data = data;
s1.start = 0;
s1.end = mid;
s1.count = 0;
s2.data = data;
s2.start = mid + 1;
s2.end = TEST_SIZE - 1;
s2.count = 0;
DWORD threadID1;
HANDLE hThread1;
DWORD threadID2;
HANDLE hThread2;
printf("创建线程... ... \n");
hThread1 = CreateThread(NULL, 0, ThreadProc, &s1, 0, &threadID1);
hThread2 = CreateThread(NULL, 0, ThreadProc, &s2, 0, &threadID2);
if (hThread1 && hThread2) {
WaitForSingleObject(hThread1, INFINITE);
WaitForSingleObject(hThread2, INFINITE);
}
printf("\n进程爸爸欢迎线程的归来!搜索的结果cout:%d\n",s1.count+s2.count);
system("pause");
return 0;
}
int main_back(void) {
int* data = NULL;
int count = 0;
data = new int[TEST_SIZE];
for (int i = 0; i < TEST_SIZE; i++) {
data[i] = i;
}
time_t start, end;
time(&start);
for (int j = 0; j < 10; j++) {
for (int i = 0; i < TEST_SIZE; i++) {
if (data[i] == NUMBER) {
count++;
}
}
}
time(&end);
printf("查找数据所花时间: %lld\n", end - start);
system("pause");
return 0;
}