而不是sizeof(std::atomic<bool>)==1
?
互斥体可以通过一个简单的实现std::atomic<bool>
,所以我认为互斥锁的大小可以那么小,或者可能是 4(32 位)。
与一个bool
你只能实现一个自旋锁。请注意,这将是一个不公平的锁,因为没有任何东西可以确保等待者排队,因此在最极端的情况下,在高度争用的情况下,线程有可能永远被阻塞,因为它总是会失去获取锁的竞争。
互斥锁实现需要操作系统的支持才能使等待线程进入睡眠状态。因此,互斥体需要一个标志来告诉它是否被锁定,以及某种形式的队列描述符,允许将等待线程置于睡眠状态并唤醒它们。如果您希望互斥锁能够支持递归锁定、鲁棒性、可选旋转、优先级反转保护等,则它需要更多成员。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)