From 6ee83009433498a65216dfd2d1dc94a21bd5d3b5 Mon Sep 17 00:00:00 2001
From: Philippe Rzetelski
Date: Wed, 17 Nov 2021 20:25:57 +1030
Subject: [PATCH 1/4] Folder structure set up and an about
---
.../Parallel and Concurrent Programming with C++/About.md | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 MultiThreading/Parallel and Concurrent Programming with C++/About.md
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.
From 092cde0372293512c9b52ca154923a3f1f28d996 Mon Sep 17 00:00:00 2001
From: Philippe Rzetelski
Date: Wed, 17 Nov 2021 20:57:29 +1030
Subject: [PATCH 2/4] Initial VS setup with single thread process
---
.../ParallelConcurrentCpp_1.vcxproj | 147 ++++++++++++++++++
.../ParallelConcurrentCpp_1.vcxproj.filters | 22 +++
.../ParallelConcurrentCpp_1.vcxproj.user | 4 +
.../Part1/ParallelConcurrentCpp_1/Source.cpp | 23 +++
4 files changed, 196 insertions(+)
create mode 100644 MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj
create mode 100644 MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj.filters
create mode 100644 MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/ParallelConcurrentCpp_1.vcxproj.user
create mode 100644 MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/Source.cpp
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..a51d97b
--- /dev/null
+++ b/MultiThreading/Parallel and Concurrent Programming with C++/Part1/ParallelConcurrentCpp_1/Source.cpp
@@ -0,0 +1,23 @@
+#include
+#include
+#include
+
+void CPU_Waster(int* pid)
+{
+
+ printf("CPU Waster Process ID: %d\n", _getpid());
+ *pid = _getpid();
+
+
+}
+
+int main()
+{
+ int main_process_pid = _getpid();
+ printf("Main Process ID: %d\n", main_process_pid);
+
+ int cpu_waster_pid = 0;
+ CPU_Waster(&cpu_waster_pid);
+ assert(cpu_waster_pid == main_process_pid);
+ return 0;
+}
From 952c4271bb045ef9039f3dce6115a37a78433f63 Mon Sep 17 00:00:00 2001
From: Philippe Rzetelski
Date: Wed, 17 Nov 2021 21:07:28 +1030
Subject: [PATCH 3/4] Single threaded process showing different thread and
process id
Run it to see (could not assert as could not cast from std::thread::id to int).
---
.../Part1/ParallelConcurrentCpp_1/Source.cpp | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
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
index a51d97b..7cee3da 100644
--- 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
@@ -2,22 +2,29 @@
#include
#include
-void CPU_Waster(int* pid)
+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();
}
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;
- CPU_Waster(&cpu_waster_pid);
+ 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);
+
+
return 0;
}
From 8b03a7cd2068ea1e8c8528b873706f77efb1e7ee Mon Sep 17 00:00:00 2001
From: Philippe Rzetelski
Date: Wed, 17 Nov 2021 21:50:39 +1030
Subject: [PATCH 4/4] Multithreaded process
---
.../Part1/ParallelConcurrentCpp_1/Source.cpp | 22 +++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
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
index 7cee3da..a07b3df 100644
--- 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
@@ -1,7 +1,7 @@
#include
#include
#include
-
+#include
void CPU_Waster(int* pid, std::thread::id* tid)
{
@@ -9,6 +9,16 @@ void CPU_Waster(int* pid, std::thread::id* tid)
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()
@@ -24,7 +34,15 @@ int main()
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;
}