线程编程
我想编写简单的多线程应用程序。
每个线程在打开时我逐一增加(使用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
}
}
答案 0 :(得分:2)
使用InterlockedAdd并添加0.这将锁定成员并返回值而不更改它:
while (InterlockedAdd(&member, 0) == someValue)
{
//do yet another something
}