How does one go about killing a thread in C using the functions provided in <threads.h>? There seems to be no direct way of doing this. Note: I'm aware that pthreads provides a pthread_cancel() function but I would like to stick to <threads.h> functions.
C11 : killing a thread using standard-only library
84 views Asked by tkf At
1
There are 1 answers
Related Questions in MULTITHREADING
- How can I outsource worker processes within a for loop?
- OpenMP & oneTbb difference
- Receiving Notifications for Individual Task Completion OmniThreadLibrary Parallel.ForEach
- C++ error: no matching member function for call to 'enqueue' futures.emplace_back(TP.enqueue(sum_plus_one, x, &M));
- How can I create a thread in Haskell that will restart if it gets killed due to any reason?
- Qt: running callback in the main thread from the worker thread
- Using `static` on a AVX2 counter function increases performance ~10x in MT environment without any change in Compiler optimizations
- Heap sort with multithreading
- windows multithreading CreateMutex
- The problem of "fine-grained locks and two-phase locking algorithm"
- OpenMP multi-threading not working if OpenMPI set to use one or two MPI processor
- WPF Windows Initializing is locking the separated thread in .Net 8
- TCP Client Losing Connection When Writing Data
- vc++ thread constructor throwing compiler error c2672
- ASP.NET Core 6 Web API : best way to pause before resending email
Related Questions in STANDARDS
- Does the qsort() function provide performance guarantees?
- Are all Oracle alert log errors 5 Digits long?
- Are these three default constructors equivalent in C++?
- Concept vs. Typename Parameter in Template Template
- Why does std::memory_order_acq_rel always trigger warnings in C++11?
- I am trying create standard logic app with workflows in it using arm template
- in my date column some rows i have 10/12/2007 and in some rows 10-12-2007 now i want to transfer the date into 2007-12-10 in big query
- Why can't C++ using-declaration expose a protected member of base as a public member of derived?
- Is `int(int) const` a valid function type in C++23?
- Why doesn't std::source_location provide lengths to avoid performance penalty in C++20?
- Why isn't it an error if the arguments are more than required in std::format?
- How much of the C++ standard library requires compiler support?
- How to ensure that the input of a function is within a list of options?
- Is it safe to use fmax for integer types in C?
- Graphql date range as input field
Related Questions in C11
- Forcing C standard in CMake
- Appropriate use of `void **` for garbage-collected structs in C?
- Why does C/C++ not have a atomic flag test_and_clear?
- do while loop does only execute scanf_s(" %d", &variable); once
- Setup C11 in Visual Studio Code
- C11 : killing a thread using standard-only library
- Does the C11/C17 Standard allow the compiler to clobber compound literals' memory?
- How to do file I/O with bool in C?
- How can I combine a comparison and an update in one atomic operation?
- MSVC compiled code hits debug assert when using _Atomic float
- Memory ordering and RMW operations
- How to get C11 threads (and other) man pages on linux system
- C11 nested generics
- Missing the great reason for memset_s (C11)
- What to do to make '_Generic('a', char : 1, int : 2) == 1' true
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
You can't.
It's trivial to enumerate the 8 functions defined by the C11 standard for
<threads.h>, iterate through them and determine that none of them does what you want.Therefore, as written, your requirements cannot be met. If that is all you care about, then you can stop reading here.
If you care about practical solutions, then it depends on what actual problem you're trying to solve:
_Atomicvariable and check it repeatedly. This is pretty much whatpthread_cancelis doing anyway.pthread_canceldeclares to be synchronisation points, then you can use that. If not, then you'll have to make use of preemption and that goes into OS-specific territory. On POSIX systems, you can mask a given signal on all threads except the target, and when that signal is raised, it will by necessity be raised on the target thread. Lower-level APIs might exist to remove threads from the scheduling pool and clean up their kernel state, but that will not clean up their userland state. And despite your claim that, in your case, they are "not using resources", there will at the very least be a stack to clean up, and very likely alsothrd_*-API bookkeeping data.SIGKILLwill save you, no kernel could ever sanely recover from killing a thread with an active call stack in the kernel, all you can do is pull the power chord.