Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //main.cpp
- int main() {
- Home* homePtr = new Home();
- std::mutex* catMutexPtr = new std::mutex;
- Cat pepper = Cat("Pepper", breeds::mongrel, homePtr, catMutexPtr);
- // delete homePtr;
- // delete catMutexPtr;
- pepper.thread_.join();
- return 0;
- }
- //cats.cpp
- Cat::Cat(std::string name, breeds breed, Home* homePtr, std::mutex* catMutexPtr) {
- name_ = name;
- breed_ = breed;
- homePtr_ = homePtr;
- catMutexPtr_ = catMutexPtr;
- inHome = false;
- thread_ = std::thread(&Cat::beingACat, this);
- }
- void Cat::beingACat() {
- while(true) {
- if(inHome == false) {
- if( rand() % 100 < 1) {
- catMutexPtr_->lock();
- goToHome();
- catMutexPtr_->unlock();
- } else {
- std::this_thread::sleep_for(std::chrono::milliseconds(1));
- }
- } else {
- if( rand() % 100 < 5) {
- catMutexPtr_->lock();
- goOutside();
- catMutexPtr_->unlock();
- }
- else {
- std::this_thread::sleep_for(std::chrono::milliseconds(1));
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement