今天又找了一篇部落格研究p,v操作。。
發現。。它有乙個變數沒有宣告。。
我就換了篇部落格。。
然後就看懂了。。
關鍵突破在於while迴圈分號的位置
以及並行執行的理解。。這個是大坑。。
意思就是說在同乙個時間的段內!段很重要。。有不同的任務的執行交疊在一起
上面的文章分析完之後我就知道這個併發的結構了。。
我認為進展性就是。。執行完一句話必然下次輪到這個程序時要執行下一句話
這樣你的程式才能執行完。。按照我之前的理解。。每次都執行第一句。。太蠢了。。
這樣永遠執行不完。。
那麼這裡還有乙個前提。。我們如何實現邏輯上task-level的併發結構
那麼,如何實現支援併發的設計?兩個字:拆分。
之所以併發設計往往需要把流程拆開,是因為如果不拆分也就不可能在同一時間段進行多個任務了。這種拆分可以是平行的拆分,比如抽象成同類的任務,也可以是不平行的,比如分為多個步驟。
這個是乙個很基礎的思路
那麼上圖的結構也是在說一次可能執行一句一次也可能執行多句。。但是,在任何乙個時間點上都只有一段**在執行
注意區分時間點和時間段
併發程式有乙個顯然的性質。。並行的執行過程可以被分解成順序執行的過程。。前提是要固定在一定時間範圍內不變
count=1;同時取count和,count在時間不變的情況下依次被p1,p2取或p2,p1取是一樣的。。
那麼這裡還有乙個性質那就是並行分解成順序的。。那麼是和『order』無關的。。
如果你while分號看錯的話。。就炸了。。很費解的。。
所以我們有時候還是要檢驗輸入腦內資料的正確性。。已經問題的約束條件。。
然後還有乙個前提就是搞明白程式執行的順序。。
那麼當前這個理解的狀態下。。是每次挑乙個排程的程序去執行一句話。。
那麼對於p,v原語和硬體操作都是原子操作。。不可中斷的
當然還有軟中斷就是強行關閉中斷。。以後再說。。
原子操作可能包含了多個語句。。這種情況例外。。我們仍然當成一句來管
解決書上看不懂的思路是。。
明確書上的內容是否和你想的一樣。。
對於併發執行困惑去查資料。。大概明白了這是一種執行結構
以及對於書上各種概念和條件約束牢牢記住,比如說。。程序。。
原語。。中斷。。
12.26增加感悟。。
p,v操作是成對出現的。。在程式的執行路徑上成對出現
並且p,v操作的核心是訊號量和等待佇列(其中一種實現p,v操作的方法)
以及何時加入等待佇列何時從等待佇列中刪除
是p,v原語操作的核心
總結。。檢查輸入。。檢查概念。。檢查條件
一定把前面的依賴項。。疑惑的東西都解決了再往下看。。
是解決看不懂書的乙個思路
關於併發使用者數的思考 通過PV量換算併發
首先介紹一下pv量 pv 訪問量 即page view,即頁面瀏覽量或點選量,使用者每次重新整理即被計算一次。uv 獨立訪客 即unique visitor,訪問您 的一台電腦客戶端為乙個訪客。00 00 24 00內相同的客戶 端只被計算一次。ip 獨立ip 即internet protocol,...
關於Nginx的一些優化 突破十萬併發
關於nginx的一些優化 突破十萬併發 2011年05月04日 關於nginx的一些優化 突破十萬併發 pecl install memcache pecl install apc pecl install syck beta yum install syck yum install syck de...
關於併發的問題
實際專案開發中遇到這樣的乙個問題,主表的讀取和副表的讀取,前者為表更新之前的結果,後者為表更新之後的結果。由此懷疑mysql事務提交之後表更新不是按照表的語句前後順序執行,而是按照mysql的自身的優化機制 並無實證 來決定語句先後的,但是事務未執行完畢之前對外部是不可見,要不就回出現髒讀,所以上述...