我想在我的C/C++程序中使用原子交换指令实现的"_test_and_set"汇编语言锁。
class LockImpl
{
public:
static void lockResource(DWORD resourceLock )
{
__asm
{
InUseLoop: mov eax, 0;0=In Use
xchg eax, resourceLock
cmp eax, 0
je InUseLoop
}
}
static void unLockResource(DWORD resourceLock )
{
__asm
{
mov resourceLock , 1
}
}
};
这个可以工作,但是有一个bug。
问题在于我想传递DWORD * resourceLock而不是DWORD resourceLock。
所以问题是如何从C/C++传递指针到汇编语言并将其取回?
提前致谢。
敬礼, -Jay。
P.S. 这样做是为了避免在用户空间和内核空间之间进行上下文切换。