View difference between Paste ID: LyBffYEx and ccWaJf3V
SHOW: | | - or go back to the newest paste.
1
#include "stdafx.h"
2
#include <iostream>
3
#include <pthread.h>
4
#include <stdio.h>
5
#include <stdlib.h>
6
#include <string.h>
7
8
using namespace std;
9
10
int suma;
11
const int NUM_OF_THREADS = 7;
12
13
pthread_mutex_t myMutex = PTHREAD_MUTEX_INITIALIZER;
14
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
15
16
void* sumuj(void* arg)
17
{
18
	pthread_mutex_lock(&myMutex);
19
	int* przedzial = (int*)arg;
20
	//cout<<przedzial[0]<<endl<<przedzial[1]<<endl<<endl;
21
	for(int i=przedzial[0]; i <przedzial[1]; i++)
22
	{
23
		suma = suma + i;
24
	}
25
	pthread_mutex_unlock(&myMutex);
26
27
	return arg;
28
}
29
30
void rownolegle()
31
{
32
	pthread_t threads[NUM_OF_THREADS];
33
	int ids[NUM_OF_THREADS];
34
	int przedzial[NUM_OF_THREADS+1];
35
36
	for(int i = 0; i<NUM_OF_THREADS; i++)
37
	{
38
		przedzial[i] = i*(2012/NUM_OF_THREADS);
39
	}
40
	przedzial[NUM_OF_THREADS] = 2012;
41
42
	for(int i = 0; i<NUM_OF_THREADS; i++)
43
	{
44
		ids[i] = pthread_create(&threads[i], NULL, sumuj, (void*)&przedzial[i]);
45
	}
46
47
	for(int i = 0; i<NUM_OF_THREADS; i++)
48
	{
49
		ids[i] = pthread_join(threads[i], NULL);
50
	}
51
52
	cout<<"ROWNOLEGLE - \tsuma:\t"<<suma<<endl;
53
}
54
55
void nieRownolegle()
56
{
57
	suma = 0;
58
	for(int i=0; i <2012; i++)
59
	{
60
		suma = suma + i;
61
	}
62
	cout<<"NIEROWNOLEGLE -\tsuma:\t"<<suma<<endl;
63
}
64
65
int main()
66
{
67
	rownolegle();
68
69
	nieRownolegle();
70
71
	system("pause");
72
}