Wiki Page Content

Differences between revisions 10 and 11
Revision 10 as of 2011-03-18 22:34:07
Size: 1517
Editor: SheenaSmith
Comment: minor formatting change
Revision 11 as of 2013-08-12 04:57:11
Size: 1333
Editor: Sam Lantinga
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
||<tablewidth="100%"style="color: rgb(255, 0, 0); text-align: center;">DRAFT ||
Line 7: Line 5:
Use this function to coordinate threads in a multi-threaded environment. This function will unlock the provided mutex and wait for the condition variable to be signaled. Once the condition variable is signaled this function will re-lock the mutex and return. Use this function to wait until a condition variable is signaled.
Line 17: Line 15:
||'''cond''' ||^the condition pointer whose signal will be waited on.^ ||
||'''mutex''' ||^mutex pointer used to gate thread access.^ ||
||'''cond''' ||the condition variable to wait on||
||'''mutex''' ||the mutex used to coordinate thread access||
Line 25: Line 22:
{{{#!highlight cpp
You can add your code example here
}}}
<<Include(SDL_CreateCond, , , from="## Begin Condition Variable Example", to="## End Condition Variable Example")>>
Line 30: Line 25:
This function unlocks the specified '''mutex''' and waits on another thread to call [[SDL_CondSignal]]() or [[SDL_CondBroadcast]]() on the condition variable '''cond'''. The '''mutex''' is re-locked once the condition variable is signaled. This function unlocks the specified '''mutex''' and waits on another thread to call [[SDL_CondSignal]]() or [[SDL_CondBroadcast]]() on the condition variable '''cond'''. Once the condition variable is signaled, the mutex is re-locked and the function returns.
Line 32: Line 27:
The mutex must be locked before entering this function. The mutex must be locked before calling this function.
Line 34: Line 29:
This function is the equivalent of calling [[SDL_CondWaitTimeout]] with a time length of SDL_MUTEX_MAXWAIT. This function is the equivalent of calling [[SDL_CondWaitTimeout]]() with a time length of SDL_MUTEX_MAXWAIT.
Line 37: Line 32:
 . [[SDL_CondSignal]] *
 . [[SDL_CondWaitTimeout]] *
 . [[SDL_mutexP]] *
 .[[SDL_CreateCond]]
.[[SDL_CondBroadcast]]
 .
[[SDL_CondSignal]]
 .[[SDL_CondWaitTimeout]]
 .[[SDL_DestroyCond]]

SDL_CondWait

Use this function to wait until a condition variable is signaled.

Syntax

int SDL_CondWait(SDL_cond*  cond,
                 SDL_mutex* mutex)

Function Parameters

cond

the condition variable to wait on

mutex

the mutex used to coordinate thread access

Return Value

Returns 0 when it is signaled or a negative error code on failure; call SDL_GetError() for more information.

Code Examples

Typical use of condition variables:

SDL_bool condition = SDL_FALSE;
SDL_mutex *lock;
SDL_cond *cond;

lock = SDL_CreateMutex();
cond = SDL_CreateCond();
.
.
Thread A:
    SDL_LockMutex(lock);
    while (!condition) {
        SDL_CondWait(cond, lock);
    }
    SDL_UnlockMutex(lock);

Thread B:
    SDL_LockMutex(lock);
    ...
    condition = SDL_TRUE;
    ...
    SDL_CondSignal(cond);
    SDL_UnlockMutex(lock);
.
.
SDL_DestroyCond(cond);
SDL_DestroyMutex(lock);

Remarks

This function unlocks the specified mutex and waits on another thread to call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable cond. Once the condition variable is signaled, the mutex is re-locked and the function returns.

The mutex must be locked before calling this function.

This function is the equivalent of calling SDL_CondWaitTimeout() with a time length of SDL_MUTEX_MAXWAIT.


CategoryAPI, CategoryMutex

None: SDL_CondWait (last edited 2015-04-26 19:04:51 by PhilippWiesemann)

(Page Info.)
Feedback
Please include your contact information if you'd like to receive a reply.
Submit