Does signal() and wait() do in a semaphore algorithm? I know that one of them does S++ and the other S-- but I am not sure which one does which. I have checked out the signal algorithm and it seems to show that signal brings the counter down to 0.
            Asked
            
        
        
            Active
            
        
            Viewed 166 times
        
    -1
            
            
        - 
                    Possible duplicate of [What is a semaphore?](https://stackoverflow.com/questions/34519/what-is-a-semaphore) – João Neto Feb 05 '19 at 11:58
1 Answers
0
            
            
        Conditional Variables are the ones with signal and wait.
A Conditional variable is used when you want a thread to wait until a certain condition is met.
while(!canProceed) { cond.wait(); }
When another thread wants to unblock these blocked threads, it simply calls signal (to unblock one) or broadcast (to unblock all).
canProceed = true
cond.broadcast()
Semaphores are simply generalizations of a mutex. While a mutex allows for one thread inside a given critical section, semaphores allow for N threads inside.
Threads initially wait to enter a critical section; after they're done they post (at least using the pthreads API).
semaphore.wait();
do_stuff();
semaphore.post();
 
    
    
        João Neto
        
- 1,732
- 17
- 28
 
    