ObservableMap呼叫流程分析

2021-09-12 12:23:08 字數 1313 閱讀 2995

**一:

observable.subscribeon(schedulers.io())

.map(new resultfunc())

.observeon(androidschedulers.mainthread())

.subscribe(spsubscriber);

**二 :

@checkreturnvalue

@schedulersupport(schedulersupport.none)

}

把this,物件儲存為source,並註冊了function函式

**三:

public observablemap(observablesourcesource, function<? super t, ? extends u> function)
然後執行**一中的subscribe方法,進行觀察者註冊,

**四:在subscribe方法中會呼叫subscribeactual(observer)方法,這個方法是父類的抽象方法,因為當前的子類為observablemap,所以會去呼叫

**五

@schedulersupport(schedulersupport.none)

@override

public final void subscribe(observer<? super t> observer)  catch (nullpointerexception e)  catch (throwable e) 

}

在**五中,source會去註冊source的subscribe,因為**四中的subscribe是observablemap的(這個地方有疑問),這個source就是**一中的observable,這樣子就把**五中包裝一層new mapobserver(t, function)的又成功註冊給了source,當source發出onnext時,就會先觸發mapobserver的onnext

**五:

@override

public void subscribeactual(observer<? super u> t)

**六:

@override

public void onnext(t t) 

if (sourcemode != none) 

u v;

try  catch (throwable ex) 

actual.onnext(v);

}

完。

長呼叫與短呼叫 呼叫門

cs裡的是乙個段選擇子 1 拆分段選擇子,查gdt表 2 該段描述符為系統描述符,s位為0,type為1100,是乙個門描述符 dpl必須為3,不然該描述符的許可權檢查過不去 3 該描述符的16到31位為另外乙個段描述符的選擇子 決定是否提權 另外乙個段描述符 必須是 段 dpl決定是否提權 長呼叫...

庫呼叫,系統呼叫

通過這個問題,可以判斷候選人是否具有豐富的程式設計經驗以及是否具有找出這類問題答案的敏銳感覺。簡明的回答是 函式庫呼叫是語言或應用程式的一部分,而系統呼叫是作業系統 的一部分。你要確保弄懂 trap 自陷 這個關鍵字的含義。系統呼叫是在作業系統核心發現乙個 trap 或中斷後進行的。函式庫呼叫 vs...

系統呼叫 函式呼叫

linux下對檔案操作有兩種方式 提供了庫函式,如open close read write ioctl 等,需包含標頭檔案unistd.h。以write 函式為例 其函式原型為size t write int fd,const void buf,size t nbytes 其操作物件為檔案控制代碼...