目錄
panic會將這個異常不斷向上丟擲,直到有地方處理它,如果有處理,則不會再向上丟擲。倘若沒有處理,那麼最終會quenu導致main掛掉.
golang雖然沒有try catch機制,卻有一種類似的recover機制,後續demo我們可以觀測到它的用法和作用
func main()
}()go test1()
time.sleep(time.second * 3)
panic(errors.new("stop test1"))
log.println("123")
select {}
}func test1()
}()go test1()
time.sleep(time.second * 3)
makeerr()
log.println("123")
select {}}
func test1()
}()time.sleep(time.second * 3)
makeerr()
log.println("123")
select {}}
func test1()
}()go test1()
time.sleep(time.second * 3)
log.println("123")
select {}
}func test1()
協程中如果沒recover,那麼error就會拋向main,main就會掛掉,從而沒有執行到後面的log列印。
---> 這種情況,main中做defer recover是沒用的
func main()
func test1()
func test2()
}()log.println("test2 start")
panic(errors.new("stop test2"))
log.println("test2 end")
}func main()
func test1()
}()log.println("test1 start")
test2()
log.println("test1 end")
}func test2()
func2異常,執行終止,向呼叫者func1丟擲進而本身退出,func1得到異常,執行終止,本身退出時recover進行處理,從而保活了main
陣列處理機
sisd single instruction singledatastream 單指令流單資料流 單處理器計算機 對儲存在單一儲存器中的資料進行操作。simd single instruction multiple datastream 單指令流多資料流 同一條指令控制多個處理器的執行。misd ...
陣列處理機
陣列處理機 通過重複設定大量相同的處理單元pe processing element 將它們按一定方式互連成陣列,在單一控制部件cu control unit 控制下,對各自所分配的不同資料並行執行同一組指令規定的操作。是操作級並行的simd計算機 simd指的是單指令流多資料流,是一種實現資料級並...
處理機排程
如果沒有處理機排程,則意味著必須等待當前程序執行完畢後下一程序才能執行,而程序常需等待外設的輸入,i o的速度相比處理機是非常慢的,因此這會對處理機資源造成嚴重浪費。引入排程後,可在執行程序等待輸入時把處理機排程給其他程序,從而提高處理機的利用率。作業排程 高階 在外存的作業中挑選乙個或多個作業,給...