在面试时,我被问到如何在处理多线程编程时实现公平锁定。
对于这项任务,我有5个功能可以使用:
// those 2 first functions are atomic.
bool test_and_set(struct *lock)
{
int temp=lock->value;
lock->value=1;
return temp==1;
}
void reset(struct *lock)
{
lock->value=0;
}
sleep (int x)
- 此函数可以延迟线程x秒,注意x可以是无穷大。signal (thread id)
- 此函数可以唤醒线程号id。getid()
- 返回线程ID。