协慌网

登录 贡献 社区

什么是互斥锁?

互斥锁是一种编程概念,经常用于解决多线程问题。我对社区的问题:

什么是互斥锁,如何使用?

答案

当我在工作中进行激烈讨论时,我会使用橡胶鸡,在这种情况下,我会把它放在书桌上。抱着鸡的人是唯一被允许说话的人。如果你不抱鸡,你就不会说话。您只能指出自己想要这只鸡,然后等到收到它再说。一旦说完,您就可以将鸡肉交还给主持人,主持人将把鸡肉交给下一个要发言的人。这样可以确保人们不会互相讲话,也没有自己的交谈空间。

用 Mutex 替换 Chicken 并用线程替换 person,您基本上就有了互斥锁的概念。

当然,没有橡胶互斥锁。只有橡皮鸡。我的猫曾经有一只橡胶老鼠,但他们吃了它。

当然,在使用橡皮鸡之前,您需要问自己是否在一个房间中实际上需要 5 个人,而让一个人独自完成所有工作不仅会更轻松吗?实际上,这只是在扩展类比,但您明白了。

互斥锁是互斥标志。它充当一段代码的网守,允许一个线程进入并阻止对所有其他线程的访问。这样可以确保被控制的代码一次只能被单个线程击中。只要确保完成后释放互斥量即可。 :)

MUT UAL防爆clusion。这是其上的 Wikipedia 条目。

互斥锁的重点是同步两个线程。当您有两个线程尝试访问单个资源时,通常的模式是在输入代码之前让第一段代码尝试访问以设置互斥量。当第二个代码块尝试访问时,它会看到已设置互斥锁,并等待直到第一个代码块完成(并取消设置互斥锁),然后继续。

如何实现此目标的具体细节显然会因编程语言而有很大差异。