5
是否推薦使用我自己的異步功能來擴展core.async的功能?擴展clojure的功能core.async
通道的異步處理由put!
和take!
接受回調,但協議嵌套在async.impl.protocols
命名空間。 impl意思是別住!在這種情況下,還是可以執行它們?
例如,我可以將Netty通道或Java套接字作爲ReadPort和WritePort封裝。
是否推薦使用我自己的異步功能來擴展core.async的功能?擴展clojure的功能core.async
通道的異步處理由put!
和take!
接受回調,但協議嵌套在async.impl.protocols
命名空間。 impl意思是別住!在這種情況下,還是可以執行它們?
例如,我可以將Netty通道或Java套接字作爲ReadPort和WritePort封裝。
core.async
協議的意圖是作爲實現您自己的緩衝區,通道,端口等的實現掛鉤。它們存在於impl中,因爲它們是實現的一部分,而不是公共用戶API。
該團隊認爲他們是可以改變的,直到該庫的非alpha版本發佈(我沒有時間表)。從async的發佈到現在,協議並沒有改變,但是現在有一個突破性的改變,特別是put!
和take!
。
如果您現在願意處理捕捉更改,請隨意按照您的意願實施。
Tim B已經花費了相當多的時間來研究將異步通道連接到網絡,並且在保留通道語義的同時執行操作非常具有挑戰性。目前推薦的模式是使用與網絡I/O通信的專用線程,並在應用程序中與「通道邊緣」進行通信(可能使用put!
和take!
)。這種模式不需要實現內部協議。
那麼,在那裏*使用*作爲答案,說本質上「去吧!」這似乎已被收回。 –
我會說你想做什麼! – Hendekagon
@Hendekagon但是,如果協議是隱藏的,那麼更改它的可能性會更大,恕不另行通知。那將是一隻熊。 –