arr2sum.c

来自「这是一个很简单的在linux环境下的线程编程例子」· C语言 代码 · 共 54 行

C
54
字号

//创建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 + =
减小字号Ctrl + -
显示快捷键?