Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Counter.h"
- extern concurrent_vector<unsigned char> clip2CounterVector;
- extern concurrent_hash_map<unsigned char, unsigned int> couterValues;
- struct CounterClass {
- concurrent_vector<unsigned char>& myClip2CounterVector;
- concurrent_hash_map<unsigned char, unsigned int>& myCouterValues;
- CounterClass(concurrent_vector<unsigned char>& myClip2CounterVector_, concurrent_hash_map<unsigned char, unsigned int>& myCouterValues_) : myClip2CounterVector(myClip2CounterVector_), myCouterValues(myCouterValues_) {}
- void operator()(const blocked_range<unsigned int>& range) const {
- concurrent_hash_map<unsigned char, unsigned int>::accessor a;
- for (int p = range.begin(); p != range.end(); p++) {
- myCouterValues.insert(a, myClip2CounterVector.at(p));
- a->second += 1;
- a.release();
- }
- }
- };
- RetVal Counter()
- {
- unsigned char data;
- // array initialization
- parallel_for(blocked_range<unsigned int>(0, clip2CounterVector.size()), CounterClass(clip2CounterVector, couterValues));
- return RET_OK;
- }
- ------------------------------------------------------------
- #ifndef _COUNTER_H_
- #define _COUNTER_H_
- #include <queue>
- #include <vector>
- #include "defines.h"
- #include "tbb/concurrent_hash_map.h"
- #include "tbb/concurrent_vector.h"
- #include <tbb/parallel_for.h>
- using namespace std;
- using namespace tbb;
- RetVal Counter();
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement