鍍金池/ 教程/ Linux/ 死鎖概念
信號(hào)
創(chuàng)建目錄權(quán)限
示例程序
進(jìn)程的定義
Hello World進(jìn)程
創(chuàng)建進(jìn)程
進(jìn)程鎖
第四章 項(xiàng)目實(shí)例Run
Nohup命令
PID
前言
系統(tǒng)調(diào)用sendfile
進(jìn)程參數(shù)
參考書籍
后記
進(jìn)程狀態(tài)
本書概述
寫時(shí)復(fù)制(Copy On Write)
Docker簡(jiǎn)介
第五章 注意事項(xiàng)
實(shí)現(xiàn)Run
孤兒進(jìn)程概念
共享內(nèi)存
衍生(Spawn)新進(jìn)程
PPID
第三章 進(jìn)程進(jìn)階
退出碼
簡(jiǎn)介
進(jìn)程文件
Thanks for reading!
項(xiàng)目學(xué)習(xí)
第一章 進(jìn)程基礎(chǔ)
僵尸進(jìn)程
系統(tǒng)調(diào)用
POSIX簡(jiǎn)介
執(zhí)行(Exec)外部程序
文件描述符
進(jìn)程名字
進(jìn)程輸入與輸出
Cgroups
進(jìn)程間通信
查看PID
死鎖概念
進(jìn)程越多越好?
Run項(xiàng)目架構(gòu)
  • 1.
復(fù)制(Fork)進(jìn)程
第二章 Go編程實(shí)例
活鎖概念
守護(hù)(Daemon)進(jìn)程
并發(fā)與并行
捕獲SIGKILL
Namespaces簡(jiǎn)介

死鎖概念

死鎖概念

死鎖(Deadlock)就是一個(gè)進(jìn)程拿著資源A請(qǐng)求資源B,另一個(gè)進(jìn)程拿著資源B請(qǐng)求資源A,雙方都不釋放自己的資源,導(dǎo)致兩個(gè)進(jìn)程都進(jìn)行不下去。

示例程序

我們可以寫代碼模擬進(jìn)程死鎖的例子。

package main

func main() {
  ch := make(chan int)
  <-ch
}

運(yùn)行結(jié)果

root@fa13d0439d7a:/go/src# go run deadlock.go
fatal error: all goroutines are asleep - deadlock!

goroutine 16 [chan receive]:
main.main()
/go/src/deadlock.go:5 +0x4f
exit status 2

這里Go虛擬機(jī)已經(jīng)替我們檢測(cè)出死鎖的情況,因?yàn)樗蠫oroutine都阻塞住沒(méi)有運(yùn)行,關(guān)于Goroutine的概念有機(jī)會(huì)詳細(xì)介紹一下。

我們可能很早就接觸過(guò)死鎖的概念,也很容易模擬出來(lái),那么你是否知道活鎖呢?

上一篇:文件描述符下一篇:Cgroups