看別人的博客來學習.

看的是這個人的:
進線程同步
套接字,共享內存(信號燈...),管道(相關進程),命名管道(無關進程,描述符)
信號,消息隊列(有格式,類型,優先級)
線程同步:
鎖:互斥鎖,自旋鎖(一直原地打轉的鎖),讀寫鎖(多讀單寫),條件變量(互斥鎖),信號量(高級互斥,類似紅綠燈)
協程(程序範圍內線程),多核->多進程+協程.
併發性:其實協程,線程都差不多,都是在條件不具備時,爲了不浪費資源,切換到其他程序的過程.
就像多條道路一樣,這條不通,就走另外幾條.
進程通信方法:
linux:管道 信號量 共享內存 消息隊列 套接字 windows:共享內存(特殊文件映射),郵槽(點對點消息隊列) 匿名管道 命名管道 套接字.
文件映射:把文件當內存一樣使用.
共享內存:用-1代替文件句柄,文件映射對象,從頁面訪問內存.其他進程可訪問.
匿名管道:左端句柄(進程)--右端句柄(進程)可單向(只讀-只寫),可雙向(都可讀寫).
命名管道:服進程與客戶進程通信.兩個進程之間通信比較,多了就不行了.根據權限通信.可跨計算機,tcp
郵槽:單向通信.客-名->發送,放在郵槽中,可多郵槽實現雙向通信.就像郵箱一樣.放在那,然後有空就來讀.用udp.
套接字.
線程通信:同步互斥.鎖,信號機制.
窗口:全局變量,消息隊列.

內部中斷,又叫異常.有三種:程序錯誤,軟件引發,int 0,int 3,bound,機器檢查.
硬件中斷:外圍硬件發出,請求服務.中斷控制器收集,先執行指令,再響應中斷.軟中斷:int n
memcache,內存中緩存數據或對象.

c文件讀寫函數:open,read,close,write,lseek(指定偏移),fstat(狀態),mmap(內存映射), mmap映射後,不必讀寫了,像內存一樣操作.頁面大小的整數倍,面向流的設備不能映射,實現與硬件有關, fcntl(文件屬性),ioctl通過對文描發送命令來控制設備.
位圖:就是一個4位整數用1位來表示.節省32倍空間.
布隆過濾器:判斷是否存在元素,本質還是哈希.哈希將元素映射爲位.哈希的缺點就是數據量大時的衝突. 不存儲元素,可保密.哈希函數間無關,易於硬件並行實現.可表全集.可位操作.不能刪元素,就是個哈希.
同步IO,異步IO:這是IO完成的事.
死鎖.就是我們都要兩個東西才能幹活,結果你一個,我一個,大家都幹不了活,乾瞪眼.
其實計算機行業,最大的毛病就是概念太多.很多一樣的東西,折騰過來,折騰過去.瞎折騰.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章