diff --git a/MultiThreading/Parallel and Concurrent Programming with C++/About.md b/MultiThreading/Parallel and Concurrent Programming with C++/About.md new file mode 100644 index 0000000..7be545f --- /dev/null +++ b/MultiThreading/Parallel and Concurrent Programming with C++/About.md @@ -0,0 +1,4 @@ +https://www.linkedin.com/learning/parallel-and-concurrent-programming-with-c-plus-plus-part-1 +https://www.linkedin.com/learning/parallel-and-concurrent-programming-with-c-plus-plus-part-2 + +Following and implementing ^, with own modifications/deviations where I want to explore more/do something different. diff --git a/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj b/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj new file mode 100644 index 0000000..c1e1e6a --- /dev/null +++ b/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj @@ -0,0 +1,147 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {4b21298c-6b13-4a70-a0e1-eed094d655be} + ParallelConcurrentCpp1 + 10.0 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj.filters b/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj.filters new file mode 100644 index 0000000..3e7e62e --- /dev/null +++ b/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj.user b/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/Source.cpp b/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/Source.cpp new file mode 100644 index 0000000..a07b3df --- /dev/null +++ b/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/Source.cpp @@ -0,0 +1,48 @@ +#include +#include +#include +#include +void CPU_Waster(int* pid, std::thread::id* tid) +{ + + printf("CPU Waster Process ID: %d\n", _getpid()); + printf("CPU Waster Thread ID: %d\n", std::this_thread::get_id()); + *pid = _getpid(); + *tid = std::this_thread::get_id(); + +} + +void CPU_Waster() +{ + + printf("CPU Waster Process ID: %d\n", _getpid()); + printf("CPU Waster Thread ID: %d\n", std::this_thread::get_id()); + + while (1); +} + +int main() +{ + int main_process_pid = _getpid(); + std::thread::id main_tid = std::this_thread::get_id(); + printf("Main Process ID: %d\n", main_process_pid); + printf("Main Thread ID: %d\n", main_tid); + + int cpu_waster_pid = 0; + std::thread::id cpu_waster_tid; + CPU_Waster(&cpu_waster_pid, &cpu_waster_tid); + + assert(cpu_waster_pid == main_process_pid); + assert(cpu_waster_tid == main_tid); + + void (*CPU_WasterPtr)() = &CPU_Waster; + std::thread thread1(CPU_WasterPtr); + std::thread thread2(CPU_WasterPtr); + + while (1) + std::this_thread::sleep_for(std::chrono::seconds(1)); + + + + return 0; +}