面试挑战实现具有给定功能的二进制信号量

时间:2014-08-19 19:48:20

标签: multithreading

在面试时,我被问到如何在处理多线程编程时实现公平锁定。

对于这项任务,我有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。

0 个答案:

没有答案