我目前正在使用以下代码对变量进行线程安全访问。
int gnVariable;
void getVariableValue(int *pnValue)
{
acquireLock(); //Acquires the protection mechanism
*pnValue = gnVariable;
releaseLock(); //Releasing the protection mechanism
}
我想将我的 API 签名更改为更加用户友好的
int getVariableValue(void);
我应该如何重写该函数 - 以便 API 的用户不必担心锁定/解锁细节?
由于您提供了 C++ 作为选项,因此您可以包装互斥锁/解锁。然后您可以直接返回该值:
class lock_wrapper
{
public:
lock_wrapper()
{
acquireLock();
}
~lock_wrapper()
{
releaseLock();
}
};
int getVariableValue()
{
lock_wrapper lw;
return gnVariable;
}
如果您需要对可能引发异常的代码进行锁定/解锁,这也会派上用场。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)