發表文章

目前顯示的是 8月, 2016的文章

[隨筆] 多執行緒 vs 多進程

圖片
最近因為遇到了這方面的問題,便去求助了一下google大神跟認識的大神 便順手把這篇記錄下來,當作備忘使用 首先,先說一下他們的英文名稱 multi-thread  => 多執行緒 multi-process => 多進程 大致上而言,在排程部分,multi-process是比multi-thread更消耗資源的東東(但也因此速度更快),因為multi-thread是全部放在一個process裡面,但multi-process則不是,所以在系統排程時會導致multi-process比multi-thread消耗更多資源。 在記憶體部分,multi-process的記憶體是分開的,所以要溝通的話必須調用系統函數而multi-thread因為他的記憶體都是放一起的,所以不用,但也不是說multi-thread沒有缺點,因為如果他同時對同一個區塊做io的話會造成混亂(如下圖所示),所以這時候便要加上mutex lock來鎖住他,不讓multi-thread能夠同時io,也就是說,當一個記憶體區塊被使用時,其他thread不能去碰它,看是要等他讓cpu空轉還是做其他事情(這也是造成效率高或低的主因,空等太多跟別人比起來會很慢),此外multi-process是每個process都有一份程式碼,但multi-thread則是所有thread都共用一份,而這在大的程式碼中最明顯,如果記憶體吃不消那就會被放到swap裡面,最後導致所有process都在等swap的io。 此外,如果multi-process其中一個當掉其他的還是能夠正常運行(雖然有些小問題,像是像是orphan process(parent process 當掉)或 zombie process (child process當掉,parent process就成了zombie)),但是如果multi-process當掉則是全部都被關掉(因為OS在處理時是以process下去看),舉例而言,就像chrome是多個process所以一個分頁當掉沒差,其他分頁還能正常運作 總而言之 速度方面 multi-process > multi-thread 資源消耗方面 multi-process > multi-thread 記憶體消耗方面 multi-proc

[隨筆] email大量寄送

最近在做一些有關短時間大量寄送email的服務,但是往往在寄出幾封信後就失敗了@@ 最後才發現原來是Gmail把它當作廣告信封殺了 後來是修改了信件內容讓他不要那麼像廣告信 以及加上了spf認證情況才好轉一些 我是只有做2 1. 不要同時大量發送郵件 2 . Mail server 要記得用 spf 來做認證 參考連結 https://support.google.com/mail/answer/180707?hl=zh-Hant https://support.google.com/mail/answer/81126 https://support.google.com/mail/answer/2451690 https://ihower.tw/blog/archives/3481 http://www.jianshu.com/p/3c3d4e28da3d