尝试在 C 中实现一个非常简单的互斥体(锁)时我有点困惑。我知道互斥体类似于二进制信号量,除了互斥体还强制释放锁的线程必须是最近获得它的同一线程。我对如何跟踪所有权感到困惑?
这就是我到目前为止所拥有的。请记住,它还没有完成,并且应该非常简单(单处理器,互斥体上没有递归,禁用中断作为互斥方法等)。
struct mutex {
char *mutexName;
volatile int inUse;
};
我相信我应该添加另一个成员变量,即 whoIsOwner,但我对在那里存储的内容有点困惑。我认为它必须是可以唯一标识尝试调用锁的线程的东西?它是否正确?
我有一个线程结构,它有一个“char *threadName”成员变量(以及其他变量),但我不确定如何从互斥锁实现中访问它。
任何指针/提示/想法将不胜感激。