RSS Email Twitter GitHub Dribbble LinkedIn Facebook Instagram YouTube Pinterest Reddit icon menu

Cody's 探索日誌

東摸西摸,十分好奇

PV: / UV:

TAGS

多進程/多執行緒! 並發/平行?

開始學習如何提升某部分演算法的效能,對於如何運用多工開發邏輯的釐清和整理 跟以往單工開發的邏輯差上許多,必須考慮到整合、處理邏輯、場景等等的因素 多執行緒(線程) Multi-Thread 啟動 Thread 的速度就不會比 Process 來的快,但是彼此之間的記憶體是共享的 但是在處理的過程中沒有小心處理,可能會導致彼此之間搞的一踏糊塗 多進程 Multi-Process 啟動 Process 的速度是比較快的,擁有獨立的記憶體空間及資源 多個 Process 之間由於記憶體獨立的關係,彼此之間不能直接交換資料 需要透過一個通道進行傳遞,才能有辦法使 Process 之間溝通 然而一個 Process 內是可以擁有多個 Thread Multi-Thread vs. Multi-Process Process 較厚重 獨立記憶體空間 彼此通信過程緩慢繁雜 Thread 較輕量 擁有所處共同記憶體空間 彼此通訊過程迅速方便 並發 Concurrency 依照上圖的情境說明,依照 A 處理 Job1、B 處理 Job2、C 處理 Job3 但是 A、B、C 彼此牽制,好比搶奪一個辦公桌 誰坐在上面就能開始工作,離開崗位後其他人利馬搶辦公桌來使用 平行 Parallelism 依照上圖的情境說明,依照 A、B、C 進行工作處理分別為 Job1、Job2、Job3 但是 A、B、C 同時依序進行工作,沒有誰先誰後的問題,同時的進行處理 Concurrency vs. Parallelism Parallelism 同時進行處理 能夠使用多核 執行順序可以預期 Concurrency 輪流進行處理 只能使用單核 執行順序無法預期 (Race Condition) Concurrency 沒有辦法同時運作,那要他何用!?

推薦不錯的 Markdown 筆記軟體 - Boostnote

最近開始上班,使用 Markdown 撰寫一些學習時整理的資料 原本是使用 MacDown 撰寫,但是文件多了,整理起來十分不方便 原本想說用 Evernote 來保存整理,但是本身不支援 MarkDown 需要安裝插件 後來找 Boostnote 外觀看起來挺簡約,就來嘗試嘗試 基本上 Boostnote 如同多數的文件編輯軟體一樣,分為三大區塊的常見介面 第一天使用,我個人就挺上手的了,雖然 MacDown 的顯示主題的風格我更喜歡一點 但是不礙於我對 Boostnote 的使用,光是多了筆記整理、標籤、分類、介面等等 就足夠吸引我從 MacDown 轉換至 Boostnote 安裝 透過 官網 下載安裝,手機版正在準備中 目前我是用起來挺上手的,而且介面很乾淨 Tag 除了最基本的文章資料夾分類外,還有 Tag 功能,可以對每篇文章 附加 Tag 再更一步方便進行搜尋,這個功能我很喜歡 透過左側功能列表欄的標籤按鈕進入標籤列表 左側就會顯示標籤列表,會顯示已經設定好的標籤及對應的數量 軟體設定 透過左側功能列表欄右上角的設定按鈕進入軟體設定頁面 對語言上面有困難的朋友,Boostnote 也支援繁體中文 除此之外有許許多多的主題類型可以設定 全螢幕 當然不會只有小小的區塊進行撰寫 可以透過快捷鍵 Command ⌘ + B 或右上角的全螢幕按鈕進入全螢幕狀態 程式碼片段 Snippets 除了支援 MackDown 以外,還支援程式碼片段 (Snippets) 方便工程師們儲存程式片段,這真的是非常方便的一個功能 藍圈設定程式碼片段說明 紅圈雙擊右鍵編輯,給予程式碼命名,偵測副檔名來給程式碼以高亮顯示 橘圈可以新增多個程式碼片段集中在一個筆記中 例如: 同一個功能不同程式碼版本 雲端同步 Boostnote 目前並沒有提供線上雲端空間進行同步 不過 官方 有第三方的雲端同步方法進行教學