# Program to compute sum of an array using parallel processing

```# include<sys/types.h>
# include<sys/ipc.h>
# include<sys/shm.h>

int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int sum=0,i;
key_t key=0X1000;
int *ptr;
int id,shmid,shmid1;

int pfork(int);
void pjoin(int ,int);

shmid=shmget(key,4,IPC_CREAT|0666);

if(shmid < 0)
printf(\"ERROR\\n\");
else
printf(\"Shmid Is %d\\n\",shmid);

shmid1=shmget(key,4,IPC_CREAT|0666);

printf(\"Shmid1=%d\\n\",shmid1);

ptr=shmat(shmid,0,0);

*ptr=0;
id=pfork(2);

if(id==0)
{
for(i=0;i<10;i+=2)
{
sum=sum+a[i];
}
printf(\"Sum in parent is %d\\n\",sum);
}
if(id==1)
{
for(i=1;i<10;i+=2)
{
*ptr=*ptr+a[i];
}
printf(\"Sum in child is %d\\n\",*ptr);
}

pjoin(2,id);

sum=sum+*ptr;
printf(\"the sum is %d\\n\",sum);
return 0;
}

int pfork(int x)
{
int j;
for(j=1;j<x;j++)
{
if(fork()==0)
return j;
}
return 0;
}

void pjoin(int x,int id)
{
int j;

if(id==0)
{
for(j=1;j<x;j++)
{
wait(0);
}
}
else
{
exit(0);
}
}
```

Didn't find what you were looking for? Find more on Program to compute sum of an array using parallel processing