setjmp和longjmp
編譯性語言(C++):分支計算返回---可能內存泄露或死鎖
CPU結構體:用來保存當前運行環境,EAX,EBX...與CPU對應
?
ret = setjmp()? //設置一個返回點:現場(寄存器)保存到CPU結構體----------第一次返回0
if(ret == 0) {
//多核并行計算,提供服務
??? CPU1
??? ...(服務)...
??? longjmp(buf,1);//得到結果,恢復(必須釋放掉所有資源)
?
??? CPU2
??? ...(服務)...
??? longjmp(buf,2);//得到結果,恢復(必須釋放掉所有資源)
?
??? CPU3
??? ...(服務)...
??? longjmp(buf,3);//得到結果,恢復(必須釋放掉所有資源)
?
} else {
??? switch(ret){
??????? case 1:
??????? case 2:
??????? ......
??? }
}
?
解釋性語言(Java/JS/Python):分支計算返回
?
?
//多核并行計算,提供服務
foo1:
??? CPU1
??? ...(服務)...
????return;(不需考慮資源釋放)
?
foo2:?
??? CPU2
??? ...(服務)...
????return;(不需考慮資源釋放)?
?
foo3:
??? CPU3
??? ...(服務)...
????return;(不需考慮資源釋放)?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的setjmp和longjmp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JNI Java本地接口(双向接口)
- 下一篇: ABI(Application Bina