设为首页 加入收藏

TOP

动态开辟指定数量的线程来查找动态开辟的数组中的1000000数据中的值(一)
2015-07-20 18:03:02 来源: 作者: 【 】 浏览:4
Tags:动态 开辟 指定 数量 线程 查找 1000000 数据
??

1、项目包结构

\

array.h

#ifndef _ARRAY_H_

#define _ARRAY_H_

/************************************************************************/

/* 初始化数组 */

/************************************************************************/

extern void initArrayStoreSpace(int **arr,int n);

/************************************************************************/

/* 初始化数组内容 */

/************************************************************************/

extern void initArrayContent(int *arr, int n);

/************************************************************************/

/* 打印制定的数组 */

/************************************************************************/

extern void printArrayContent(int *arr,int n);

/************************************************************************/

/* */

/************************************************************************/

extern void freeArrayStoreSpace(int *arr);

#endif

arrayImpl.c

#include

#include

#include "array.h"

/************************************************************************/

/* 由于栈的大小有限,所以这个时候要在堆上开辟空间 */

/************************************************************************/

void initArrayStoreSpace(int **arr, int N)

{

if (N < 0)

{

printf("对不起,您要的数组大小不能小于0");

return;

}

else

{

*arr = (int *)malloc(sizeof(int)* N);

}

}

/************************************************************************/

/* 初始化数组的内容 */

/************************************************************************/

void initArrayContent(int *arr, int N)

{

int i = 0;

//注意,定义变量一定要指向要给NULL,不然会报错

int *px = arr;

for (px; px < arr + N; px++)

{

*px = ++i;

}

}

/************************************************************************/

/* 打印制定的数组,将数组的值赋值成1-N */

/************************************************************************/

void printArrayContent(int *arr, int N)

{

int i = 0;

int *px = arr;

for (px; px < arr + N; px++)

{

printf("%d\n", *px);

}

}

/************************************************************************/

/* 释放内存空间 */

/************************************************************************/

void freeArrayStoreSpace(int *arr)

{

free(arr);

}

find.h

#ifndef _FIND_H_

#define _FIND_H_

/************************************************************************/

/* 普通方式进行查找 */

/************************************************************************/

extern void find(void *p);

/************************************************************************/

/* 通过二分查找的方式进行查找 */

/************************************************************************/

extern void binarySearch(void *p);

#endif

findImpl.c

#include

#include

#include

#include "thread.h"

#include "find.h"

/************************************************************************/

/* 如果是想让线程使用,这里必须是void *p类型的 */

/************************************************************************/

void find(void *p)

{

//指针类型转换

struct threadStruct *pstruct = (struct threadStruct *)p;

int *px = pstruct->start;

//内存的遍历,从地址开始累加100个元素的大小,遍历所有元素

for (px; px < pstruct->start + pstruct->length; px++)

{

Sleep(100);

if (*(pstruct->pflag) != 0)

{

printf("属下%d无能,其他线程已经找到", pstruct->identify);

//并且获取系统时间

//这个地方关闭线程,如果直接返回,这时候这个线程自动关闭了。

return;

}

//判断

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDOJ 4883 TIANKENG’s restaurant 下一篇uva 11290 - Gangs(卡特兰数)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: