锁 (计算机科学) 在计算机科学中锁是在执行多线程时用于强行限制资源访问的同步机制即用于在并发控制中保证对互斥要求的满足 一般的鎖是建議鎖advisory lock每個線程在訪問對應資源前都需取得鎖的資訊再根據資訊決定是否可以存取若存取對應資訊鎖的狀態會改變為鎖定因此其他線程此時不會訪問該資源當資源結束後會恢復鎖的狀態允許其他線程的訪問我们日常使用的基本都是建议锁它并不强制生效这里的不强制生效的意思是如果某一个进程对一个文件持有一把锁之后其他进程仍然可以直接对文件进行各种操作的比如openreadwrite只有当多个进程在操作文件前都去检查和对相关锁进行锁操作的时候文件锁的规则才会生效这就是一般建议锁的行为 有些系統有強制鎖mandatory lock若有未授權的線程想要訪問鎖定的資料在訪問時就會產生异常强制锁试图实现一套内核级的锁操作当有进程对某个文件上锁之后其他进程即使不在操作文件之前检查锁也会在openread或write等文件操作时发生错误内核将对有锁的文件在任何情况下的锁规则都生效这就是强制锁的行为由此可以理解如果内核想要支持强制锁将需要在内核实现openreadwrite等系统调用内部进行支持