色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

caf圖層特性

李中冰2年前14瀏覽0評論

caf圖層特性?

. caf的主要特性

1. actor

actor分為兩種, 無類型actor和強類型actor. actor的創建非常簡單, 簡單到不能再簡單了, 以下面的例子. 將1個自由函數作為參數傳遞spawn,

1個actor就生成了, 在下面的例子中actorx內部持有1個actor的句柄self. 所有與這個actor有關的消息都從這里開始.

void actorx(event_based_actor* self) { } spawn(actorx);

2. 模式匹配.

模式匹配是caf中1個10分重要的特性, 它直接致使了caf基于lambda表達式的消息回調列表成為可能. caf為此自己內建了DSL語言來達成這個目的.

下面效果就是來自模式匹配.

void actorx(event_based_actor* self) { self->become( [=](const string& what) { LOG_DEBUG("got a string msg: %s ", what.c_str()) }, [=](const int& what) { LOG_DEBUG("got integer msg: %d ", what) }); } auto a = spawn(actorx); anon_send(a, "string"); /* 向actor發送1個字符串. */ anon_send(a, 0x10); /* 向actor發送1個整數. */

需要說明的是, 上面的例子中actorx函數是立即返回的, 也就是說里面的become也是立即返回的, 好像把兩個消息處理回調放在actorx函數內部.

當有消息到來時, 經模式匹配后就會調用恰當的lambda表達式. 不用再到處找回調了.

3. 消息發送.

消息發送可以分為以下幾種:

a). 發完就忘, 就像上面anon_send.

b). 同步發送, 等待響應. 等待是異步的, 相當于只是期待1個響應.

c). 同步發送, 等待響應, 超時后收到1個系統消息.

d). 同步發送, 同步等待. 適用阻塞的actor api.

e). 消息延遲發送, 這1點比akka做得漂亮很多.

f). 消息前轉, forward.

g). 消息優先級選擇.

4. 消息接收.

主要有兩種特性:

a). 等待超時, 超時后收到1個系統消息.

b). 消息跳過, skip.

5. 行動(behavior)

如果actor的消息流程是1個有限狀態機, 那行動就是用來控制流程的標志. behavior是1個棧, 通過keep_behavior壓棧, unbecome恢復.

6. 鏈接(link)

兩個(或多個)actor可以相互link在1起, 生死相干. 1起活著或默許1起死去.

當其中1個actor異常退出時, 另外一個(多是多個)會收到1個"exit_msg"消息, 如果不捕獲這個消息. 默許的行動就是當前actor也退出.

如果選擇捕獲, 那就自己定義行動.

7. 監視(monitor)

1個actor可選擇監視另外一個或另幾個actor. 乃至可以同時監視同1個actor屢次. 當被監視的actor退出時, 監視者就會收到1個"down_msg".

監視者僅僅是收到這個消息而已. 不會有其它對自己的響應. 需自己定義行動.

8. 在網絡上發布1個actor.

這個功能貌似還非常骨感, 其做法是調用pubish函數將1個actor綁定在某個本地端口上, 作為服務器向外提供服務. 以下面的端口8080, 端口

后面還有1個默許的字符串參數, 允許指定本地服務ip.

java按鈕重載,caf圖層特性