Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Counter
- {
- public:
- Conuter(const std::string& fileName);
- boost::uint16_t getCounter();
- private:
- tbb::atomic<boost::uint32_t> counter;
- std::string counterFileName;
- };
- Counter::Counter(const std::string& fileName) : counter(), counterFileName(fileName)
- {
- std::string line;
- std::ifstream counterFile (fileName.c_str());
- if (counterFile.is_open())
- {
- getline (counterFile, line);
- counterFile.close();
- }
- boost::uint32_t temp = std::stoul (line,nullptr,0);
- counter = temp;
- }
- boost::uint32_t Counter::getCounter()
- {
- if (counter > 1000)
- {
- counter = 0;
- }
- assert( counter < 1000);
- const boost::uint32_t ret = counter++;
- if ((counter % 10) == 0)
- {
- // write the counter back to the file.
- std::ofstream file (counterFileName.c_str());
- if (file.is_open())
- {
- myfile << counter;
- myfile.close();
- }
- }
- return ret;
- }
- boost::thread t1(&Counter::getCounter, counter);
- boost::thread t2(&Counter::getCounter, counter);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement