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;
+}