Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<thread>
- #include <vector>
- using namespace std;
- typedef vector<double>::const_iterator ci;
- void f(ci begin, ci end, double& zbir);
- int main() {
- vector<double>v = {10,20,30,40,50};
- double zbir1; //ukupan zbir
- int n;
- cout<<"unesi broj niti: "<<endl;
- cin>>n;
- ci begin = v.begin();
- ci end = v.begin() + (v.size())/n;
- thread a[n]; //niz thread-ova
- double zbir[n];
- //inicijalizacija niza za sume
- for(int k=0; k<n;k++) {
- zbir[k] = 0;
- }
- for(int j=0; j<n-1; ++j) {
- a[j]= thread(f,begin,end,ref(zbir[j]));
- begin = end;
- end = begin+ ( (v.size())/n );
- zbir1+=zbir[j];
- }
- a[n] = thread(f,begin,end,ref(zbir[n-1]));
- zbir1+=zbir[n-1];
- for(int s=0; s<n; s++) {
- a[s].join();
- }
- cout << "ukupno=" << zbir1<< endl;
- }
- void f(ci begin, ci end, double& zbir){
- ci it;
- for(it=begin; it!=end; ++it) {
- zbir+= *it;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement