前言:
本文作为Linux系统编程的总结,介绍了一些零散的概念,例如死锁、可重入函数、自旋锁和读写锁等。其中,死锁的概念尤为重要,而自旋锁和读写锁则相对次要,我们只需简单了解即可。
接下来,我们直接进入第一个主题:死锁。
死锁的概念为:
我们可以举一个简单的例子,A持有1元钱,B持有1元钱,A和B都想要购买价值2元的商品C。此时,A向B申请1元钱,而B向A申请1元钱,但它们都不愿意释放自己的1元钱。因此,A在等待B提供1元钱,而B在等待A提供1元钱,结果就形成了互相等待的局面。
从上面的例子中,我们可以总结出死锁形成的原因:
互斥条件:至少有一个资源只能被某个执行流持有。
请求并保持条件:一个执行流在申请新资源时,仍旧保持对已有资源的占有。
不可剥夺条件:已经分配给一个执行流的资源不能被强行剥夺,只能由执行流自身释放。
环路等待条件:存在一个环路,每个执行流都在等待其他执行流持有的资源。
以上就是初识Linux · 系统编程done的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号