📄 arr2sum.c
字号:
//创建2线程
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <pthread.h>#include "declare.h"void *parr2sum(void *arg);extern int array[ARRAY_SIZE];int flag = 0;int arr2sum (int count_length){ int res, sum=0; //线程函数执行的返回值 struct COUNTPOINT cp[2]; pthread_t parr1,parr2; //线程标识符变量 int result1,result2; //线程执行的返回值 cp[0].start=0; cp[0].length = count_length/2; res = pthread_create(&parr1,NULL,parr2sum,&cp[0]); /*创建线程*/ if (res!=0) { perror("Create Thread failed");//创建失败 exit(EXIT_FAILURE); } cp[1].start=cp[0].length; cp[1].length = count_length-cp[0].length; res = pthread_create(&parr2,NULL,parr2sum,&cp[1]); /*创建线程*/ if (res!=0) { perror("Create Thread failed");//创建失败 exit(EXIT_FAILURE); } res = pthread_join(parr1,(void**)&result1); sum += result1;//归并相加 res = pthread_join(parr2,(void**)&result2); sum += result2; return sum;}//2线程数组数之和
void *parr2sum(void *arg) { int i,sum=0; int* pa; struct COUNTPOINT cp; cp = *(struct COUNTPOINT*)arg; pa = array+cp.start; for (i=0; i<cp.length; i++) { sum += pa[i]; //数组数之和 } pthread_exit((void*)sum);//线程退出}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -