refactored FineList to have Node in seperate file

This commit is contained in:
2020-12-30 18:50:31 +01:00
parent 0e83584a76
commit 337ca9b169
2 changed files with 26 additions and 29 deletions

View File

@@ -1,46 +1,26 @@
#include<iostream>
#include<thread>
#include <algorithm>
#include <queue>
#include <mutex>
#include <assert.h>
#include <bits/stdc++.h>
#include <bits/stdc++.h>
#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;

17
Assignment_2/Node.cpp Normal file
View File

@@ -0,0 +1,17 @@
#include <mutex>
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();
}