From 88e51287040f38128521f122ac064c4c9b8cd632 Mon Sep 17 00:00:00 2001 From: Brady Bodily Date: Wed, 11 Apr 2018 22:53:01 +0000 Subject: [PATCH] working need to put in shape of pi --- CMakeLists.txt | 5 +- FifoQueue.cpp | 22 ++ FifoQueue.hpp | 16 ++ Makefile | 208 ++++++++++++++++++ Map.cpp | 11 + Map.hpp | 13 ++ .../CMakeFiles/ComputePi.dir/CXX.includecache | 24 ++ .../CMakeFiles/ComputePi.dir/DependInfo.cmake | 2 + .../CMakeFiles/ComputePi.dir/FifoQueue.cpp.o | Bin 0 -> 2856 bytes build/CMakeFiles/ComputePi.dir/Map.cpp.o | Bin 0 -> 4588 bytes build/CMakeFiles/ComputePi.dir/build.make | 58 ++++- .../ComputePi.dir/cmake_clean.cmake | 2 + .../CMakeFiles/ComputePi.dir/depend.internal | 8 + build/CMakeFiles/ComputePi.dir/depend.make | 8 + build/CMakeFiles/ComputePi.dir/link.txt | 2 +- build/CMakeFiles/ComputePi.dir/main.cpp.o | Bin 19912 -> 22040 bytes build/CMakeFiles/ComputePi.dir/progress.make | 2 + build/CMakeFiles/Makefile.cmake | 70 ------ build/CMakeFiles/Makefile2 | 4 +- build/CMakeFiles/progress.marks | 2 +- build/ComputePi | Bin 26548 -> 32264 bytes build/Makefile | 60 +++++ computePi.cpp | 1 - main.cpp | 41 ++-- 24 files changed, 462 insertions(+), 97 deletions(-) create mode 100644 FifoQueue.cpp create mode 100644 FifoQueue.hpp create mode 100644 Makefile create mode 100644 Map.cpp create mode 100644 Map.hpp create mode 100644 build/CMakeFiles/ComputePi.dir/FifoQueue.cpp.o create mode 100644 build/CMakeFiles/ComputePi.dir/Map.cpp.o diff --git a/CMakeLists.txt b/CMakeLists.txt index cc97684..577a506 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,9 @@ add_executable(ComputePi main.cpp computePi.cpp computePi.hpp - + Map.cpp + Map.hpp + FifoQueue.cpp + FifoQueue.hpp # Add files implementing your thread-safe data structures below ) diff --git a/FifoQueue.cpp b/FifoQueue.cpp new file mode 100644 index 0000000..690f3c1 --- /dev/null +++ b/FifoQueue.cpp @@ -0,0 +1,22 @@ +#include "FifoQueue.hpp" + + +void FifoQueue::pop(){ + std::lock_guard lock(qMutex); + FifoQueue.pop(); +} + +bool FifoQueue::empty(){ + std::lock_guard lock(qMutex); + return FifoQueue.empty(); +} + +void FifoQueue::push(int i){ + std::lock_guard lock(qMutex); + FifoQueue.push(i); +} + +unsigned int FifoQueue::front(){ + std::lock_guard lock(qMutex); + return FifoQueue.front(); +} diff --git a/FifoQueue.hpp b/FifoQueue.hpp new file mode 100644 index 0000000..4c2f51a --- /dev/null +++ b/FifoQueue.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include +#include + +class FifoQueue{ + private: + std::mutex qMutex; + public: + std::queue FifoQueue; + + bool empty(); + void pop(); + void push(int i); + unsigned int front(); +}; diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..29f463a --- /dev/null +++ b/Makefile @@ -0,0 +1,208 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.7 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/pi/Repos/cs3100hw5 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/pi/Repos/cs3100hw5 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/pi/Repos/cs3100hw5/CMakeFiles /home/pi/Repos/cs3100hw5/CMakeFiles/progress.marks + $(MAKE) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/pi/Repos/cs3100hw5/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named ComputePi + +# Build rule for target. +ComputePi: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 ComputePi +.PHONY : ComputePi + +# fast build rule for target. +ComputePi/fast: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/build +.PHONY : ComputePi/fast + +computePi.o: computePi.cpp.o + +.PHONY : computePi.o + +# target to build an object file +computePi.cpp.o: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/computePi.cpp.o +.PHONY : computePi.cpp.o + +computePi.i: computePi.cpp.i + +.PHONY : computePi.i + +# target to preprocess a source file +computePi.cpp.i: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/computePi.cpp.i +.PHONY : computePi.cpp.i + +computePi.s: computePi.cpp.s + +.PHONY : computePi.s + +# target to generate assembly for a file +computePi.cpp.s: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/computePi.cpp.s +.PHONY : computePi.cpp.s + +main.o: main.cpp.o + +.PHONY : main.o + +# target to build an object file +main.cpp.o: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/main.cpp.o +.PHONY : main.cpp.o + +main.i: main.cpp.i + +.PHONY : main.i + +# target to preprocess a source file +main.cpp.i: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/main.cpp.i +.PHONY : main.cpp.i + +main.s: main.cpp.s + +.PHONY : main.s + +# target to generate assembly for a file +main.cpp.s: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/main.cpp.s +.PHONY : main.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... ComputePi" + @echo "... computePi.o" + @echo "... computePi.i" + @echo "... computePi.s" + @echo "... main.o" + @echo "... main.i" + @echo "... main.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/Map.cpp b/Map.cpp new file mode 100644 index 0000000..be2d1d5 --- /dev/null +++ b/Map.cpp @@ -0,0 +1,11 @@ +#include "Map.hpp" + + +void Map::safeInsert(int key, unsigned int value){ + std::lock_guard lock(qMutex); + uMap.insert({key, value}); +} + +unsigned int Map::find(int key){ + return uMap[key]; +} diff --git a/Map.hpp b/Map.hpp new file mode 100644 index 0000000..1f006fb --- /dev/null +++ b/Map.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include +#include + +class Map{ + private: + std::mutex qMutex; + public: + std::unordered_map uMap; + void safeInsert(int key, unsigned int value); + unsigned int find(int key); +}; diff --git a/build/CMakeFiles/ComputePi.dir/CXX.includecache b/build/CMakeFiles/ComputePi.dir/CXX.includecache index 394c6b4..529bb9a 100644 --- a/build/CMakeFiles/ComputePi.dir/CXX.includecache +++ b/build/CMakeFiles/ComputePi.dir/CXX.includecache @@ -6,6 +6,26 @@ #IncludeRegexTransform: +/home/pi/Repos/cs3100hw5/FifoQueue.cpp +FifoQueue.hpp +/home/pi/Repos/cs3100hw5/FifoQueue.hpp + +/home/pi/Repos/cs3100hw5/FifoQueue.hpp +queue +- +mutex +- + +/home/pi/Repos/cs3100hw5/Map.cpp +Map.hpp +/home/pi/Repos/cs3100hw5/Map.hpp + +/home/pi/Repos/cs3100hw5/Map.hpp +unordered_map +- +mutex +- + /home/pi/Repos/cs3100hw5/computePi.cpp computePi.hpp /home/pi/Repos/cs3100hw5/computePi.hpp @@ -27,6 +47,10 @@ vector - memory - +FifoQueue.hpp +/home/pi/Repos/cs3100hw5/FifoQueue.hpp +Map.hpp +/home/pi/Repos/cs3100hw5/Map.hpp computePi.hpp /home/pi/Repos/cs3100hw5/computePi.hpp diff --git a/build/CMakeFiles/ComputePi.dir/DependInfo.cmake b/build/CMakeFiles/ComputePi.dir/DependInfo.cmake index 17fb57a..2ec482f 100644 --- a/build/CMakeFiles/ComputePi.dir/DependInfo.cmake +++ b/build/CMakeFiles/ComputePi.dir/DependInfo.cmake @@ -4,6 +4,8 @@ set(CMAKE_DEPENDS_LANGUAGES ) # The set of files for implicit dependencies of each language: set(CMAKE_DEPENDS_CHECK_CXX + "/home/pi/Repos/cs3100hw5/FifoQueue.cpp" "/home/pi/Repos/cs3100hw5/build/CMakeFiles/ComputePi.dir/FifoQueue.cpp.o" + "/home/pi/Repos/cs3100hw5/Map.cpp" "/home/pi/Repos/cs3100hw5/build/CMakeFiles/ComputePi.dir/Map.cpp.o" "/home/pi/Repos/cs3100hw5/computePi.cpp" "/home/pi/Repos/cs3100hw5/build/CMakeFiles/ComputePi.dir/computePi.cpp.o" "/home/pi/Repos/cs3100hw5/main.cpp" "/home/pi/Repos/cs3100hw5/build/CMakeFiles/ComputePi.dir/main.cpp.o" ) diff --git a/build/CMakeFiles/ComputePi.dir/FifoQueue.cpp.o b/build/CMakeFiles/ComputePi.dir/FifoQueue.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..42f3abc5df1fe139754a5381b8f239728d51ad54 GIT binary patch literal 2856 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 E2H4?Ij{pDw literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/ComputePi.dir/build.make b/build/CMakeFiles/ComputePi.dir/build.make index 1083721..235d1a1 100644 --- a/build/CMakeFiles/ComputePi.dir/build.make +++ b/build/CMakeFiles/ComputePi.dir/build.make @@ -105,19 +105,71 @@ CMakeFiles/ComputePi.dir/computePi.cpp.o.provides: CMakeFiles/ComputePi.dir/comp CMakeFiles/ComputePi.dir/computePi.cpp.o.provides.build: CMakeFiles/ComputePi.dir/computePi.cpp.o +CMakeFiles/ComputePi.dir/Map.cpp.o: CMakeFiles/ComputePi.dir/flags.make +CMakeFiles/ComputePi.dir/Map.cpp.o: ../Map.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/Repos/cs3100hw5/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/ComputePi.dir/Map.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/ComputePi.dir/Map.cpp.o -c /home/pi/Repos/cs3100hw5/Map.cpp + +CMakeFiles/ComputePi.dir/Map.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/ComputePi.dir/Map.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/pi/Repos/cs3100hw5/Map.cpp > CMakeFiles/ComputePi.dir/Map.cpp.i + +CMakeFiles/ComputePi.dir/Map.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/ComputePi.dir/Map.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/pi/Repos/cs3100hw5/Map.cpp -o CMakeFiles/ComputePi.dir/Map.cpp.s + +CMakeFiles/ComputePi.dir/Map.cpp.o.requires: + +.PHONY : CMakeFiles/ComputePi.dir/Map.cpp.o.requires + +CMakeFiles/ComputePi.dir/Map.cpp.o.provides: CMakeFiles/ComputePi.dir/Map.cpp.o.requires + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/Map.cpp.o.provides.build +.PHONY : CMakeFiles/ComputePi.dir/Map.cpp.o.provides + +CMakeFiles/ComputePi.dir/Map.cpp.o.provides.build: CMakeFiles/ComputePi.dir/Map.cpp.o + + +CMakeFiles/ComputePi.dir/FifoQueue.cpp.o: CMakeFiles/ComputePi.dir/flags.make +CMakeFiles/ComputePi.dir/FifoQueue.cpp.o: ../FifoQueue.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/Repos/cs3100hw5/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/ComputePi.dir/FifoQueue.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/ComputePi.dir/FifoQueue.cpp.o -c /home/pi/Repos/cs3100hw5/FifoQueue.cpp + +CMakeFiles/ComputePi.dir/FifoQueue.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/ComputePi.dir/FifoQueue.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/pi/Repos/cs3100hw5/FifoQueue.cpp > CMakeFiles/ComputePi.dir/FifoQueue.cpp.i + +CMakeFiles/ComputePi.dir/FifoQueue.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/ComputePi.dir/FifoQueue.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/pi/Repos/cs3100hw5/FifoQueue.cpp -o CMakeFiles/ComputePi.dir/FifoQueue.cpp.s + +CMakeFiles/ComputePi.dir/FifoQueue.cpp.o.requires: + +.PHONY : CMakeFiles/ComputePi.dir/FifoQueue.cpp.o.requires + +CMakeFiles/ComputePi.dir/FifoQueue.cpp.o.provides: CMakeFiles/ComputePi.dir/FifoQueue.cpp.o.requires + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/FifoQueue.cpp.o.provides.build +.PHONY : CMakeFiles/ComputePi.dir/FifoQueue.cpp.o.provides + +CMakeFiles/ComputePi.dir/FifoQueue.cpp.o.provides.build: CMakeFiles/ComputePi.dir/FifoQueue.cpp.o + + # Object files for target ComputePi ComputePi_OBJECTS = \ "CMakeFiles/ComputePi.dir/main.cpp.o" \ -"CMakeFiles/ComputePi.dir/computePi.cpp.o" +"CMakeFiles/ComputePi.dir/computePi.cpp.o" \ +"CMakeFiles/ComputePi.dir/Map.cpp.o" \ +"CMakeFiles/ComputePi.dir/FifoQueue.cpp.o" # External object files for target ComputePi ComputePi_EXTERNAL_OBJECTS = ComputePi: CMakeFiles/ComputePi.dir/main.cpp.o ComputePi: CMakeFiles/ComputePi.dir/computePi.cpp.o +ComputePi: CMakeFiles/ComputePi.dir/Map.cpp.o +ComputePi: CMakeFiles/ComputePi.dir/FifoQueue.cpp.o ComputePi: CMakeFiles/ComputePi.dir/build.make ComputePi: CMakeFiles/ComputePi.dir/link.txt - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/pi/Repos/cs3100hw5/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking CXX executable ComputePi" + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/pi/Repos/cs3100hw5/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Linking CXX executable ComputePi" $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/ComputePi.dir/link.txt --verbose=$(VERBOSE) # Rule to build all files generated by this target. @@ -127,6 +179,8 @@ CMakeFiles/ComputePi.dir/build: ComputePi CMakeFiles/ComputePi.dir/requires: CMakeFiles/ComputePi.dir/main.cpp.o.requires CMakeFiles/ComputePi.dir/requires: CMakeFiles/ComputePi.dir/computePi.cpp.o.requires +CMakeFiles/ComputePi.dir/requires: CMakeFiles/ComputePi.dir/Map.cpp.o.requires +CMakeFiles/ComputePi.dir/requires: CMakeFiles/ComputePi.dir/FifoQueue.cpp.o.requires .PHONY : CMakeFiles/ComputePi.dir/requires diff --git a/build/CMakeFiles/ComputePi.dir/cmake_clean.cmake b/build/CMakeFiles/ComputePi.dir/cmake_clean.cmake index c4bef35..9fa47c0 100644 --- a/build/CMakeFiles/ComputePi.dir/cmake_clean.cmake +++ b/build/CMakeFiles/ComputePi.dir/cmake_clean.cmake @@ -1,6 +1,8 @@ file(REMOVE_RECURSE "CMakeFiles/ComputePi.dir/main.cpp.o" "CMakeFiles/ComputePi.dir/computePi.cpp.o" + "CMakeFiles/ComputePi.dir/Map.cpp.o" + "CMakeFiles/ComputePi.dir/FifoQueue.cpp.o" "ComputePi.pdb" "ComputePi" ) diff --git a/build/CMakeFiles/ComputePi.dir/depend.internal b/build/CMakeFiles/ComputePi.dir/depend.internal index d52312d..b10ec82 100644 --- a/build/CMakeFiles/ComputePi.dir/depend.internal +++ b/build/CMakeFiles/ComputePi.dir/depend.internal @@ -1,9 +1,17 @@ # CMAKE generated file: DO NOT EDIT! # Generated by "Unix Makefiles" Generator, CMake Version 3.7 +CMakeFiles/ComputePi.dir/FifoQueue.cpp.o + /home/pi/Repos/cs3100hw5/FifoQueue.cpp + /home/pi/Repos/cs3100hw5/FifoQueue.hpp +CMakeFiles/ComputePi.dir/Map.cpp.o + /home/pi/Repos/cs3100hw5/Map.cpp + /home/pi/Repos/cs3100hw5/Map.hpp CMakeFiles/ComputePi.dir/computePi.cpp.o /home/pi/Repos/cs3100hw5/computePi.cpp /home/pi/Repos/cs3100hw5/computePi.hpp CMakeFiles/ComputePi.dir/main.cpp.o + /home/pi/Repos/cs3100hw5/FifoQueue.hpp + /home/pi/Repos/cs3100hw5/Map.hpp /home/pi/Repos/cs3100hw5/computePi.hpp /home/pi/Repos/cs3100hw5/main.cpp diff --git a/build/CMakeFiles/ComputePi.dir/depend.make b/build/CMakeFiles/ComputePi.dir/depend.make index 5ed2ba7..fb63648 100644 --- a/build/CMakeFiles/ComputePi.dir/depend.make +++ b/build/CMakeFiles/ComputePi.dir/depend.make @@ -1,9 +1,17 @@ # CMAKE generated file: DO NOT EDIT! # Generated by "Unix Makefiles" Generator, CMake Version 3.7 +CMakeFiles/ComputePi.dir/FifoQueue.cpp.o: ../FifoQueue.cpp +CMakeFiles/ComputePi.dir/FifoQueue.cpp.o: ../FifoQueue.hpp + +CMakeFiles/ComputePi.dir/Map.cpp.o: ../Map.cpp +CMakeFiles/ComputePi.dir/Map.cpp.o: ../Map.hpp + CMakeFiles/ComputePi.dir/computePi.cpp.o: ../computePi.cpp CMakeFiles/ComputePi.dir/computePi.cpp.o: ../computePi.hpp +CMakeFiles/ComputePi.dir/main.cpp.o: ../FifoQueue.hpp +CMakeFiles/ComputePi.dir/main.cpp.o: ../Map.hpp CMakeFiles/ComputePi.dir/main.cpp.o: ../computePi.hpp CMakeFiles/ComputePi.dir/main.cpp.o: ../main.cpp diff --git a/build/CMakeFiles/ComputePi.dir/link.txt b/build/CMakeFiles/ComputePi.dir/link.txt index b041414..dd9ba57 100644 --- a/build/CMakeFiles/ComputePi.dir/link.txt +++ b/build/CMakeFiles/ComputePi.dir/link.txt @@ -1 +1 @@ -/usr/bin/c++ -std=c++11 -pthread -O3 CMakeFiles/ComputePi.dir/main.cpp.o CMakeFiles/ComputePi.dir/computePi.cpp.o -o ComputePi -rdynamic +/usr/bin/c++ -std=c++11 -pthread -O3 CMakeFiles/ComputePi.dir/main.cpp.o CMakeFiles/ComputePi.dir/computePi.cpp.o CMakeFiles/ComputePi.dir/Map.cpp.o CMakeFiles/ComputePi.dir/FifoQueue.cpp.o -o ComputePi -rdynamic diff --git a/build/CMakeFiles/ComputePi.dir/main.cpp.o b/build/CMakeFiles/ComputePi.dir/main.cpp.o index 791011647c1925eb6e71ca940f29497dd4d53522..112ea9e020edb4844c85bf1c11bc1a7e3103c9a1 100644 GIT binary patch literal 22040 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 literal 19912 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 literal 26548 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 CxVOXr diff --git a/build/Makefile b/build/Makefile index 4582f80..b36acbf 100644 --- a/build/Makefile +++ b/build/Makefile @@ -123,6 +123,60 @@ ComputePi/fast: $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/build .PHONY : ComputePi/fast +FifoQueue.o: FifoQueue.cpp.o + +.PHONY : FifoQueue.o + +# target to build an object file +FifoQueue.cpp.o: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/FifoQueue.cpp.o +.PHONY : FifoQueue.cpp.o + +FifoQueue.i: FifoQueue.cpp.i + +.PHONY : FifoQueue.i + +# target to preprocess a source file +FifoQueue.cpp.i: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/FifoQueue.cpp.i +.PHONY : FifoQueue.cpp.i + +FifoQueue.s: FifoQueue.cpp.s + +.PHONY : FifoQueue.s + +# target to generate assembly for a file +FifoQueue.cpp.s: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/FifoQueue.cpp.s +.PHONY : FifoQueue.cpp.s + +Map.o: Map.cpp.o + +.PHONY : Map.o + +# target to build an object file +Map.cpp.o: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/Map.cpp.o +.PHONY : Map.cpp.o + +Map.i: Map.cpp.i + +.PHONY : Map.i + +# target to preprocess a source file +Map.cpp.i: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/Map.cpp.i +.PHONY : Map.cpp.i + +Map.s: Map.cpp.s + +.PHONY : Map.s + +# target to generate assembly for a file +Map.cpp.s: + $(MAKE) -f CMakeFiles/ComputePi.dir/build.make CMakeFiles/ComputePi.dir/Map.cpp.s +.PHONY : Map.cpp.s + computePi.o: computePi.cpp.o .PHONY : computePi.o @@ -186,6 +240,12 @@ help: @echo "... rebuild_cache" @echo "... edit_cache" @echo "... ComputePi" + @echo "... FifoQueue.o" + @echo "... FifoQueue.i" + @echo "... FifoQueue.s" + @echo "... Map.o" + @echo "... Map.i" + @echo "... Map.s" @echo "... computePi.o" @echo "... computePi.i" @echo "... computePi.s" diff --git a/computePi.cpp b/computePi.cpp index e1e6cd8..7e65aa4 100644 --- a/computePi.cpp +++ b/computePi.cpp @@ -21,7 +21,6 @@ * your compiler supports 'long long' integers of 64 bits, you may use * the integer version of 'mul_mod' (see HAS_LONG_LONG). */ - #include "computePi.hpp" #include #include diff --git a/main.cpp b/main.cpp index 2ab3026..b60a05e 100644 --- a/main.cpp +++ b/main.cpp @@ -3,30 +3,32 @@ #include #include +#include "FifoQueue.hpp" +#include "Map.hpp" #include "computePi.hpp" -void threadWorker(std::uint16_t threadNum) { -#warning TODO: This function will take a reference to the FIFO task queue as an argument -#warning TODO: This function will take a reference to your unordered_map as an argument +void threadWorker(std::uint16_t threadNum, FifoQueue* threadSafeQueue, Map* threadSafeMap) { + while(!threadSafeQueue->empty()){ + int index = threadSafeQueue->front(); + threadSafeQueue->pop(); + unsigned int piDigit = computePiDigit(index); + threadSafeMap->safeInsert(index, piDigit); + std::cout << "."; + std::cout.flush(); + } - // - // This code exists simply to illustrate a worker thread. - // I had better not see this in your final submission. - std::cout << "Hi! I'm thread number " << threadNum << ", and I can count to 10!\n"; - for (int i = 1; i <= 10; ++i) - std::cout << "[" << threadNum << "] " << i << std::endl; - - std::cout << "[" << threadNum << "] watch me compute digit #" - << threadNum+1 << " of pi: " - << computePiDigit(threadNum+1) << std::endl; + } int main() { -#warning TODO: Initialize your thread-safe data structures here - + FifoQueue* threadSafeQueue = new FifoQueue(); + Map* threadSafeMap = new Map(); + for(int i = 1; i <= 1000; i++){ + threadSafeQueue->push(i); + } // // Make as many threads as there are CPU cores // Assign them to run our threadWorker function, and supply arguments as necessary for that function @@ -34,16 +36,17 @@ int main() { for (std::uint16_t core = 0; core < std::thread::hardware_concurrency(); core++) // The arguments you wish to pass to threadWorker are passed as // arguments to the constructor of std::thread - threads.push_back(std::make_shared(threadWorker, core)); + threads.push_back(std::make_shared(threadWorker, core, threadSafeQueue, threadSafeMap)); // // Wait for all of these threads to complete for (auto&& thread : threads) thread->join(); - std::cout << std::endl << std::endl; - -#warning TODO: Print the digits of PI from our unordered_map, in order + std::cout << std::endl << std::endl << "3."; + for(int i = 1; i <= 1000; i++){ + std::cout << threadSafeMap->find(i); + } return 0; }