I’m currently using the following code for thread-safe access of a variable.
int gnVariable;
void getVariableValue(int *pnValue)
{
acquireLock(); //Acquires the protection mechanism
*pnValue = gnVariable;
releaseLock(); //Releasing the protection mechanism
}
I would like to change my API signature to a more user-friendly
int getVariableValue(void);
How should I rewrite the function – such that the users of the API don’t have to bother about the locking/unlocking details?
Since you gave C++ as an option, you can wrap the mutex lock/unlock. You can then return the value directly:
This will also come in handy if you ever need to do a lock/unlock around code that can throw an exception.