线程安全变量 comaprison C VS2010
thread-safe variables comaprison C VS2010
线程编程
我想写一个简单的多线程应用程序。
每个线程打开时我都会将(使用InterlockedIncrement
)成员递增一个,
并在线程完成时递减它(使用 InterlockedDecrement
)
我知道 Mutex/Semaphore/event
但我会更干净/简单的方法来实现类似于 Interlocked 函数的比较。
接下来我需要的是实现比较函数[if(member == x)
]
简单示例:
线程 1 函数:
{
//do somthing
InterlockedDecrement(member);
}
线程 2 函数:
{
//do something else
InterlockedDecrement(member);
}
主线程函数:
{
while(member)//<--how can it be done in thread safe fashion
{
//do yet another something
}
}
使用 InterlockedAdd 并添加 0。这将锁定成员和 return 值而不更改它:
while (InterlockedAdd(&member, 0) == someValue)
{
//do yet another something
}
线程编程
我想写一个简单的多线程应用程序。
每个线程打开时我都会将(使用InterlockedIncrement
)成员递增一个,
并在线程完成时递减它(使用 InterlockedDecrement
)
我知道 Mutex/Semaphore/event
但我会更干净/简单的方法来实现类似于 Interlocked 函数的比较。
接下来我需要的是实现比较函数[if(member == x)
]
简单示例:
线程 1 函数:
{
//do somthing
InterlockedDecrement(member);
}
线程 2 函数:
{
//do something else
InterlockedDecrement(member);
}
主线程函数:
{
while(member)//<--how can it be done in thread safe fashion
{
//do yet another something
}
}
使用 InterlockedAdd 并添加 0。这将锁定成员和 return 值而不更改它:
while (InterlockedAdd(&member, 0) == someValue)
{
//do yet another something
}