This is for exception handling scenario in a multi-threaded scenario. More than one threads are working in parallel on some shared resource locked under mutual exclusion whenever needed. If one thread faces an exception, can I use sem_trywait to check if some other thread is waiting on the semaphore and if I find some thread is waiting on a semaphore, will use a flag that exception has occurred and I will issue a sem_post so that waiting thread may unwait and check if some exception occurred before proceeding further. In case exception occurred, the other thread which was otherwise waiting will now proceed towards a graceful exit. Please suggest. My actual qs is: can I use sem_trywait?
How to check in C Posix thread if someone is waiting on a shared semaphore?
1.4k views Asked by Dr. Debasish Jana At
1
There are 1 answers
Related Questions in C
- How to call a C language function from x86 assembly code?
- What does: "char *argv[]" mean?
- User input sanitization program, which takes a specific amount of arguments and passes the execution to a bash script
- How to crop a BMP image in half using C
- How can I get the difference in minutes between two dates and hours?
- Why will this code compile although it defines two variables with the same name?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Why can't I use the file pointer after the first read attempt fails?
- #include Header files in C with definition too
- OpenCV2 on CLion
- What is causing the store latency in this program?
- How to refer to the filepath of test data in test sourcecode?
- 9 Digit Addresses in Hexadecimal System in MacOS
- My server TCP doesn't receive messages from the client in C
- Printing the characters obtained from the array s using printf?
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 SEMAPHORE
- Binary Semaphore vs Mutux interview question
- Why sem_post() looks like blocked when using WinAPI and Semaphore to create a program that re-running again and again
- How to Create Multi-Unit Acquire/Release with std::counting_semaphore in C++20 for a Producer-Consumer Scenario?
- Techniques for making a method non-reentrant
- Trying to find a way to limit the number of List<Task> that can run at one time
- ManagedIdentityCredential authentication failed: Adding the specified count to the semaphore would cause it to exceed its maximum count
- Strange output in a synchronization problem using binary semaphores in C
- C semaphore and shared memory
- How do I resolve the semaphore timeout expired issue, with SerialPort in .NET 7 C#?
- aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host :443 ssl:default [The semaphore timeout period has expired]
- Using Goroutines to Annotate and Fetch Data in Background – Semaphore Acquisition Error within Route Handler
- How can I implement a Semaphore via a database?
- What if we keep calling semGive multiple times without semTake in binary semaphore? What will be the behavior?
- Web App, control number of available tasks in Hangifre jobs, each executing Parallel.ForEachAsync
- Thread #1: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post
Related Questions in SOLARIS-10
- Where to properly get _LONGLONG_TYPE defined
- variable value not retained after while loop
- convert multiple lines into single line in a file only after a specific pattern
- Solaris VNC Autostart with pseudocolors
- The cancelation cleanup handler routine doesn't execute after thread cancelation
- LOG4J2 LogManager nullpointer exception on startup app
- how to delete 4 day file and folder using bash script in solaris
- replace string inside `<value> REPLACE ANY STRING</value>` for solaris 10 UNIX command
- unbale to send mails to distribution list with attachment unix/solaris 10
- 'memory not mapped' Error in R on Solaris 10
- symbol FT_Library_SetLcdFilter in libfontmanager.so not found error: Openjdk JRE
- Understand output of vmstat memory utilization
- tcsh history contains junk or special charecters
- how to log in a global zone in solaris 10
- jdk8u from openjdk for solaris 11 support there or not?
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?
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)
The most straightforward solution would be to set up an additional mechanism of thread status. Semaphores are not intended to indicate whether anyone is waiting for them.
In a globally visible variable which is only written by the thread, set it to—say
1—if some thread is waiting for the semaphore and0if not. If anyone wants to know if the thread is wanting to obtain the semaphore, check the state of the variable. It shouldn't be too difficult to handle race conditions sampling the variable by ordering operations correctly.