水為什麼不走直路 Waiting until asynchronous blocks are executed

每件事情的發生必有其原因, 河流為什麼是彎的?

下面故事裡的用觀點滿有趣的, 他說彎是必然的就和人生會遇到無法跨愈的障礙一樣, 需要繞過去. 我覺得河流彎有彎的好, 缺點是水太大時容易淹水, 有時候需要截彎取直.

佛學院的一名禪師在上課時把一幅中國地圖展開,
禪師問:「這幅圖上的河流有什麼特點?」
同學答:「都不是直線,而是彎彎的曲線。」
禪師問:「為什麼會是這樣呢?也就是說,河流為什麼不走直路,而偏偏要走彎路呢?」。

(上面的故事,就醬子結束好了…)


我自己在寫iOS的程式時遇到很多的 completion block, 都是 asynchronous(非同步), 一開始的解法是想透過 dispatch_group_t 的 wait 去等, 後來一直試不出來, 而且 dispatch 太多次會有效能還有「競速」的問題,經過神人同事 Lyle Wang 的指點之後, 就是多傳一個參數進 completion block 裡, 當是最後一個 node 進來, 並且完成 completion 就去執行畫 UI 的工作, 後來執行出來的結果是正確的! 而且沒有多餘的等待.

這個解法讓我想起來「水為什麼不走直路」的文章, 我的直覺是要 synchronous 等傳回值後,就像是應該要走直的路,但受限於架構是已經在一個非同步的情況下多個block同時在執行,在架構下繞路是較佳的解法,好處級優點較多。

 

 

https://www.youtube.com/watch?v=wjIVlAExkuA

河流走彎路是自然界的一種常態
在前進的過程中,會遇到各種各樣的障礙,
把曲折的人生看作是一種常態,
不悲觀失望,不長籲短歎,不停滯不前,
把走彎路看成是前行的另一種形式、另一條途徑,
像那些走彎路的河流一樣,抵達那遙遠的人生大海。

Facebook網友回應

您可能也會感興趣的文章...

如何用虛擬主機搶拓元的門票

生活小事

使用虛擬主機搶票好處很多, 不會遇到太多相同來源IP addres 造成的拓元售票網站的 403 錯誤, 而且網路的反應時間比用台灣的網路還更短, 最有機會買到票的方式, […]

Read More

靈魂急轉彎

生活小事

沒想到這麼快,就可以開始觀賞這部影片。 《腦筋急轉彎》彼特達克特執導,《天外奇蹟》、《可可夜總會》團隊打造探索靈魂的世界。 最近小米的65型4K電視好像很多人在討論,一台 […]

Read More

獅尾B2加糖宋體:改造思源宋體橫筆加粗和墨暈,免費商用

電腦相關應用

獅尾B2加糖宋體基於思源宋體的橫筆加粗和墨暈改造。支援简体中文、繁體中文、韓文與日文。 檔案下載:https://github.com/max32002/swei-b2- […]

Read More

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *