Skip to content
Snippets Groups Projects
Commit 0bbd6113 authored by vcday's avatar vcday
Browse files

Merge branch 'milestone1' of https://gitlab.eecs.umich.edu/vcday/eecs398-search into milestone1

parents d95e47de 39e7f357
No related branches found
No related tags found
No related merge requests found
......@@ -48,6 +48,7 @@ add_executable(ParserTest
util/Stemmer.cpp
parser/tests/parserTest.cpp)
add_executable(SharedTableTest shared/SharedHashMapTest.cpp )
add_executable(URLTEST shared/url.h shared/urlTest.cpp)
......
No preview for this file type
......@@ -175,6 +175,19 @@ URLTEST/fast:
$(MAKE) -f CMakeFiles/URLTEST.dir/build.make CMakeFiles/URLTEST.dir/build
.PHONY : URLTEST/fast
#=============================================================================
# Target rules for targets named SharedTableTest
# Build rule for target.
SharedTableTest: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 SharedTableTest
.PHONY : SharedTableTest
# fast build rule for target.
SharedTableTest/fast:
$(MAKE) -f CMakeFiles/SharedTableTest.dir/build.make CMakeFiles/SharedTableTest.dir/build
.PHONY : SharedTableTest/fast
#=============================================================================
# Target rules for targets named ParserTest
......@@ -517,6 +530,33 @@ shared/Document.cpp.s:
$(MAKE) -f CMakeFiles/crawler-parser-test.dir/build.make CMakeFiles/crawler-parser-test.dir/shared/Document.cpp.s
.PHONY : shared/Document.cpp.s
shared/SharedHashMapTest.o: shared/SharedHashMapTest.cpp.o
.PHONY : shared/SharedHashMapTest.o
# target to build an object file
shared/SharedHashMapTest.cpp.o:
$(MAKE) -f CMakeFiles/SharedTableTest.dir/build.make CMakeFiles/SharedTableTest.dir/shared/SharedHashMapTest.cpp.o
.PHONY : shared/SharedHashMapTest.cpp.o
shared/SharedHashMapTest.i: shared/SharedHashMapTest.cpp.i
.PHONY : shared/SharedHashMapTest.i
# target to preprocess a source file
shared/SharedHashMapTest.cpp.i:
$(MAKE) -f CMakeFiles/SharedTableTest.dir/build.make CMakeFiles/SharedTableTest.dir/shared/SharedHashMapTest.cpp.i
.PHONY : shared/SharedHashMapTest.cpp.i
shared/SharedHashMapTest.s: shared/SharedHashMapTest.cpp.s
.PHONY : shared/SharedHashMapTest.s
# target to generate assembly for a file
shared/SharedHashMapTest.cpp.s:
$(MAKE) -f CMakeFiles/SharedTableTest.dir/build.make CMakeFiles/SharedTableTest.dir/shared/SharedHashMapTest.cpp.s
.PHONY : shared/SharedHashMapTest.cpp.s
shared/urlTest.o: shared/urlTest.cpp.o
.PHONY : shared/urlTest.o
......@@ -782,6 +822,7 @@ help:
@echo "... StringProcessingTest"
@echo "... TokenizerTest"
@echo "... URLTEST"
@echo "... SharedTableTest"
@echo "... ParserTest"
@echo "... search-engine"
@echo "... crawler-parser-test"
......@@ -818,6 +859,9 @@ help:
@echo "... shared/Document.o"
@echo "... shared/Document.i"
@echo "... shared/Document.s"
@echo "... shared/SharedHashMapTest.o"
@echo "... shared/SharedHashMapTest.i"
@echo "... shared/SharedHashMapTest.s"
@echo "... shared/urlTest.o"
@echo "... shared/urlTest.i"
@echo "... shared/urlTest.s"
......
//
// Created by Jake Close on 3/18/18.
//
#include "SharedHashMap.h"
template <class T>
void SharedHashMap::Insert( T key, T value )
{
pthread_mutex_lock(&m);
map.insert(key, value);
pthread_mutex_unlock(&m);
}
template <class T>
T void SharedHashMap::Find( T key)
{
pthread_mutex_lock(&m);
T value = map.find(key);
pthread_mutex_unlock(&m);
return value;
}
template <class T>
size_t ProducerConsumerQueue<T>::Size()
{
pthread_mutex_lock(&m);
size_t size = map.size();
pthread_mutex_unlock(&m);
return size;
}
\ No newline at end of file
//
// Created by Jake Close on 3/18/18.
//
#ifndef EECS398_SEARCH_SHAREDHASHMAP_H
#define EECS398_SEARCH_SHAREDHASHMAP_H
#include <unordered_map>
#include <pthread.h>
template <class T> class SharedHashMap {
private:
std::unordered_map<T, T> map;
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t consumer_cv = PTHREAD_COND_INITIALIZER;
public:
SharedHashMap() {}
void Insert(T key, T value);
T Find(T Key);
size_t Size();
};
//Necessary because this class is templated
#include"SharedHashMap.cpp"
#endif
//
// Created by Jake Close on 3/18/18.
//
#include "SharedHashMap.h"
#include <iostream>
#include <stdlib.h>
#include <pthread.h>
#include <cassert>
using namespace std;
pthread_mutex_t cout_lock = PTHREAD_MUTEX_INITIALIZER;
int main(int argc, const char * argv[])
{
SharedHashMap < int, int > *sharedTable = new(SharedHashMap < int, int >);
pthread_t t;
sharedTable->Insert( 5, 4 );
int v = sharedTable->Find( 5 );
assert( v == 4 );
delete sharedTable;
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment