aboutsummaryrefslogtreecommitdiffhomepage
path: root/content/20210515-pthread_cancel-noexcept/thread.cc
diff options
context:
space:
mode:
authorjohannst <johannes.stoelp@gmail.com>2021-07-15 21:20:14 +0200
committerjohannst <johannes.stoelp@gmail.com>2021-07-15 21:20:14 +0200
commit82e9ac4163b46b59e121194f84ac370818482923 (patch)
treeb52adf8f5b2bafe7904f563c33ec23f46cb7c87c /content/20210515-pthread_cancel-noexcept/thread.cc
parent617d73fc9eff5b08a80b873fd97f66caa7e80fc9 (diff)
downloadblog-82e9ac4163b46b59e121194f84ac370818482923.tar.gz
blog-82e9ac4163b46b59e121194f84ac370818482923.zip
use proper date fmt in content file names that zola can automatically can derive the date
Diffstat (limited to 'content/20210515-pthread_cancel-noexcept/thread.cc')
-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;
-}