Sponsored Content
Full Discussion: Condition variables
Top Forums Programming Condition variables Post 302477706 by Driver on Monday 6th of December 2010 08:24:55 AM
Old 12-06-2010
Look up "spurious wakeups".

The function could return for some reason other than the thread signaling the condition variable. In practice some implementations have an unrestartable pthread_cond_wait() function which could be aborted by a signal, for example. Other failure modes are possible and happen (rarely) on other systems.

In addition I believe one reason for introducing this concept was to enforce careful programming; Don't just assume the condition is implicitly true, but always make sure it really is.

Last edited by Driver; 12-06-2010 at 09:32 AM..
This User Gave Thanks to Driver For This Post:
 

10 More Discussions You Might Find Interesting

1. Programming

How to convert byteArray variables to HexaString variables for Linux?

Hello everybody, I am having problem in converting byte array variables to Hexa String variables for Linux. I have done, converting byte array variables to Hexa String variables for Windows but same function doesn't work for linux. Is there any difference in OS ? The code for Windows is given... (2 Replies)
Discussion started by: ritesh_163
2 Replies

2. UNIX for Dummies Questions & Answers

pthread condition variables and mutexes?

I am trying to understand the exact difference between condition variables and mutexes in thread synchronization ?. I know mutex will control the thread access to shared data and condition variables will be useful for waiting for certain event or condition to occur . But I couldn't understand why... (2 Replies)
Discussion started by: siddaonline
2 Replies

3. HP-UX

Difference between [condition] and [[condition]] and ((condition)) when used with if condition

Executed the following if conditions .. and got different results . only (( )) gave correct o/p with all scenarios . Can anybody please let me know what is the difference between and ] and ((condition)) when used with if condition. And why each condition gave different result. 1.... (2 Replies)
Discussion started by: soumyabubun
2 Replies

4. Shell Programming and Scripting

redirect stdout echo command in condition A run in condition B

hi, I have some problems in my simple script about the redirect echo stdout command inside a condition. Why is the echo command inside the elif still execute in the else command Here are my simple script After check on the two diff output the echo stdout redirect is present in two diff... (3 Replies)
Discussion started by: jao_madn
3 Replies

5. Programming

Understanding Condition variables

I am trying the understand the conditional variable concept. I went through the following site: https://computing.llnl.gov/tutorials/pthreads/#ConditionVariables I understand that condition variables allow threads to synchronize based upon the VALUE of data. When the data acheives a particular... (2 Replies)
Discussion started by: rupeshkp728
2 Replies

6. Shell Programming and Scripting

If condition return 0 even when it fails to satisfy te condition

HI My doubt may be basic one but I need to get it clarified.. When i use "if" condition that checks for many AND, OR logical conditions like if ]; then return 0 fi Even the if condition fails it returns as zero.. Any clue.. But if i add else condition like if ]; ... (2 Replies)
Discussion started by: Priya Amaresh
2 Replies

7. Shell Programming and Scripting

Running a script with multiple variables like 25 variables.

Hi All, i have a requirement where i have to run a script with at least 25 arguements and position of arguements can also change. the unapropriate way is like below. can we achieve this in more good and precise way?? #!/bin/ksh ##script is sample.ksh age=$1 gender=$2 class=$3 . . .... (3 Replies)
Discussion started by: Lakshman_Gupta
3 Replies

8. Shell Programming and Scripting

BASH arrays and variables of variables in C++

Sometimes it is handy to protect long scripts in C++. The following syntax works fine for simple commands: #define SHELLSCRIPT1 "\ #/bin/bash \n\ echo \"hello\" \n\ " int main () { cout <<system(SHELLSCRIPT1); return 0; } Unfortunately for there are problems for: 1d arrays:... (10 Replies)
Discussion started by: frad
10 Replies

9. Shell Programming and Scripting

Passing awk variables to bash variables

Trying to do so echo "111:222:333" |awk -F: '{system("export TESTO=" $2)}'But it doesn't work (2 Replies)
Discussion started by: urello
2 Replies

10. UNIX for Dummies Questions & Answers

How to pass variables into anothother variables?

Below are three variables, which I want to pass into variable RESULT1 username1=userid poihostname1=dellsys.com port1=8080 How can I pass these variables into below code... RESULT1=$((ssh -n username1@poihostname1 time /usr/sfw/bin/wget --user=sam --password=123 -O /dev/null -q... (4 Replies)
Discussion started by: manohar2013
4 Replies
pthread_cond_wait(3T)													     pthread_cond_wait(3T)

NAME
pthread_cond_wait(), pthread_cond_timedwait() - wait or timed wait on a condition variable SYNOPSIS
Parameters cond Pointer to the condition variable to be waited on. mutex Pointer to the mutex associated with the condition variable cond. abstime Absolute time at which the wait expires, even if the condition has not been signaled or broadcast. DESCRIPTION
The function is used to wait for the occurrence of a condition associated with the condition variable cond. The function is used to wait a limited amount of time for the occurrence of a condition associated with the condition variable cond. The abstime parameter specifies the time at which this function should time out. If the absolute time specified by abstime passes and the indicated condition has not been signaled, the function returns an error to the caller. Note: abstime is the time at which the wait expires, not the length of time the thread will wait. The condition variabled denoted by cond must have been dynamically initialized by a call to or statically initialized with the macro Both functions should be called with mutex locked by the calling thread. If mutex is not locked by the calling thread, undefined behavior will result. These functions atomically release mutex and cause the calling thread to block on the condition variable cond. If another thread is able to acquire the mutex after the about-to-block thread has released it but before it has actually blocked, a subsequent call to or by the other thread will behave as if it were issued after the about-to-block thread has blocked. When the condition is signaled or the timed wait expires, the caller is unblocked and will reacquire mutex before returning. Whether these functions succeed or fail, mutex will always be reacquired before returning to the caller. Using different mutexes for concurrent calls to these functions on the same condition variable results in undefined behavior. When using condition variables, there is a predicate associated with the condition wait. If this predicate is false, the thread should perform a condition wait. Spurious wakeups may occur when waiting on a condition variable. A spurious wakeup occurs when a thread returns from a condition wait when it should really continue waiting. A normal signal being delivered to a thread may cause a spurious wakeup dur- ing a condition wait. Since the return values from and do not imply anything about the value of the predicate, the predicate should be re- evaluated. A condition wait is a When the calling thread has deferred cancellation enabled, cancellation requested will be acted upon. If a cancella- tion request is acted upon while a thread is blocked in one of these functions, mutex is reacquired before calling the cancellation cleanup handlers. The cancellation cleanup handlers should release mutex so that application deadlock does not occur. If the condition signal and the cancellation request both occur, the canceled thread will not consume the condition signal (i.e., a different thread will be unblocked due to the condition signal). If a signal is delivered to a thread waiting for a condition variable, upon return from the signal handler, the thread may return zero due to a spurious wakeup or continue waiting for the condition. RETURN VALUE
and return the following values: Successful completion. Failure. An error number is returned to indicate the error. (The variable is not set.) ERRORS
The following error value is returned by if the corresponding condition is detected. abstime has passed and a condition signal has not been received. One of the following error values is returned by and if the corresponding condition is detected. A cond, mutex, or abstime parameter points to an illegal address. The value specified by cond, mutex, or abstime is invalid. mutex is not owned by the calling thread. This error is not returned for a or mutex on HP-UX. Different mutexes are being used for cond. This error is not detected on HP-UX. WARNINGS
It is important to note that when or return without error, the associated predicate may still be false. When returns with the timeout error, the associated predicate may be true. It is recommended that a condition wait be enclosed in the equivalent of a "while loop," which checks the predicate. Undefined behavior results if these functions are called with a mutex. EXAMPLES
is recommended to be used in a loop testing the predicate associated with it. This will take care of any spurious wakeups that may occur. is also recommended to be used in a loop. This function can return success even if the predicate is not true. It should be called in a loop while checking the predicate. If the function times out, the predicate may still have become true. The predicate should be checked before processing the timeout case. The example given below does not do any other error checking. AUTHOR
and were derived from the IEEE POSIX P1003.1c standard. SEE ALSO
pthread_cond_init(3T), pthread_cond_signal(3T). STANDARDS CONFORMANCE
Pthread Library pthread_cond_wait(3T)
All times are GMT -4. The time now is 11:02 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy