Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <thread>
- #include <cstdlib>
- #include <chrono>
- #include <mutex>
- class Stock
- {
- private:
- double price;
- int changes;
- public:
- Stock(double startingPrice)
- {
- changes = 0;
- price = startingPrice;
- }
- double getPrice()
- {
- return price;
- }
- void setPrice(double Price)
- {
- price = Price;
- if(price < 0)
- price = 0.0;
- changes++;
- }
- int getChanges()
- {
- return changes;
- }
- };
- void priceRandom(Stock & stock)
- {
- for(;;)
- {
- stock.setPrice(stock.getPrice() + (std::rand()%200 - 100) / 100.0);
- /// OTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJ
- std::this_thread::sleep_for(std::chrono::nanoseconds(10));
- /// OTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJOTUTAJ
- }
- }
- int main()
- {
- Stock stock(100);
- std::cout << "Hello world!\n";
- std::thread thread(priceRandom, std::ref(stock));
- auto start = std::chrono::system_clock::now();
- for(;;)
- {
- int changes = stock.getChanges();
- std::cout << "Price of stock: " << stock.getPrice() << "\tchanges: " << changes << "\n";
- std::this_thread::sleep_for(std::chrono::milliseconds(10));
- if (changes > 10000)
- break;
- }
- auto end = std::chrono::system_clock::now();
- auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
- std::cout << elapsed.count() << "ms" << '\n';
- thread.join();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement