aboutsummaryrefslogtreecommitdiffhomepage
path: root/content/20210515-pthread_cancel-noexcept
diff options
context:
space:
mode:
Diffstat (limited to 'content/20210515-pthread_cancel-noexcept')
-rw-r--r--content/20210515-pthread_cancel-noexcept/thread.cc40
1 files changed, 0 insertions, 40 deletions
diff --git a/content/20210515-pthread_cancel-noexcept/thread.cc b/content/20210515-pthread_cancel-noexcept/thread.cc
deleted file mode 100644
index 73370be..0000000
--- a/content/20210515-pthread_cancel-noexcept/thread.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-// file : thread.cc
-// compile: g++ thread.cc -o thread -lpthread
-
-#include <atomic>
-
-#include <pthread.h>
-#include <unistd.h>
-
-struct S {
- ~S() {
- const char msg[] = "cancellation-point\n";
- // write() -> pthread cancellation point.
- write(STDOUT_FILENO, msg, sizeof(msg));
- }
-};
-
-std::atomic<bool> gReleaseThread{false};
-
-void* threadFn(void*) {
- while (!gReleaseThread) {}
-
- // Hit cancellation point in destructor which
- // is implicitly `noexcept`.
- S s;
-
- return nullptr;
-}
-
-int main() {
- pthread_t t;
- pthread_create(&t, nullptr /* attr */, threadFn, nullptr /* arg */);
-
- // Cancel thread and release it to hit the cancellation point.
- pthread_cancel(t);
- gReleaseThread = true;
-
- pthread_join(t, nullptr /* retval */);
-
- return 0;
-}