From 337ca9b169d9b9eb478e4b010f7b0643a28e1b6f Mon Sep 17 00:00:00 2001 From: Hannes Kuchelmeister Date: Wed, 30 Dec 2020 18:50:31 +0100 Subject: [PATCH] refactored FineList to have Node in seperate file --- Assignment_2/FineList.cpp | 38 +++++++++----------------------------- Assignment_2/Node.cpp | 17 +++++++++++++++++ 2 files changed, 26 insertions(+), 29 deletions(-) create mode 100644 Assignment_2/Node.cpp diff --git a/Assignment_2/FineList.cpp b/Assignment_2/FineList.cpp index 4297bd1..242f44e 100644 --- a/Assignment_2/FineList.cpp +++ b/Assignment_2/FineList.cpp @@ -1,46 +1,26 @@ -#include -#include -#include -#include -#include -#include -#include +#include + +#include"Node.cpp" // TODO: implement fine grained locking -class Node { -public: - int data; - Node* next; - std::mutex mut; - public: - void lock(); - void unlock(); -}; -void Node::lock() { - this->mut.lock(); -} -void Node::unlock() { - this->mut.unlock(); -} - -class Set { +class FineSet { Node* first; public: - Set(); + FineSet(); bool add(int element); bool rmv(int element); bool ctn(int element); }; -Set::Set(){ +FineSet::FineSet(){ first = new Node(); // dummy node; Node* last = new Node(); last->data = INT_MAX; // end node; first->next = last; } -bool Set::add(int element) { +bool FineSet::add(int element) { this->first->lock(); Node* p = this->first; Node* c = p->next; @@ -68,7 +48,7 @@ bool Set::add(int element) { } } -bool Set::rmv(int element) { +bool FineSet::rmv(int element) { this->first->lock(); Node* p = this->first; Node* c = p->next; @@ -92,7 +72,7 @@ bool Set::rmv(int element) { return false; } } -bool Set::ctn(int element) { +bool FineSet::ctn(int element) { this->first->lock(); Node* p = this->first; Node* c = p->next; diff --git a/Assignment_2/Node.cpp b/Assignment_2/Node.cpp new file mode 100644 index 0000000..edd4ee6 --- /dev/null +++ b/Assignment_2/Node.cpp @@ -0,0 +1,17 @@ +#include + +class Node { +public: + int data; + Node* next; + std::mutex mut; + public: + void lock(); + void unlock(); +}; +void Node::lock() { + this->mut.lock(); +} +void Node::unlock() { + this->mut.unlock(); +} \ No newline at end of file