同步非同步在程式設計的時候經常會用到,比如處理資源競爭的時候會用到**同步機制**來保證資源的有效性,在乙個程序中執行多個請求的時候用**非同步機制**來保證效率。
今天在學習同步非同步的時候突然想到乙個問題,發個問題記錄貼等以後看。也許未來的自己會嘲笑現在的自己居然這麼sb = =
假設程序有程序a和程序b,他們各自完成的任務如下
程序a:請求資源x 請求資源y
程序b:請求資源x
程序a中用的是非同步方案(假設為poll機制)處理兩個請求,而程序a和程序b中使用**互斥**來對 資源x 進行訪問。
問題的情況:
現在假設這種情況,資源x未就緒,資源y也未就緒,因此程序a和b都是阻塞狀態。一段時間過後(假設發生了硬體中斷)資源x就緒,程序a的非同步機制(poll機制)將喚醒程序a,程序b也從睡眠狀態(假設b使用等待佇列)被喚醒。而此時,如果程序b先占領了資源x,由於資源訪問的互斥,程序a訪問不了資源x就又要進入睡眠狀態了,此時就算資源y在不久後也就緒了,只要執行緒a卡在資源x上出不來,也無法處理資源y了。如此,程序a的非同步機制就被限制住發揮不出作用來。
有沒有一種方法可以解決這個矛盾的問題呢?現在只有乙個想法就是,當請求受互斥保護的資源x失敗時,如果程序a不掛起,那不就有機會繼續處理資源y了?當然,不知道有沒有一種互斥方案能夠滿足這種需求呢?
關於ajax的非同步同步問題
關於ajax的非同步同步問題 之前一直對於ajax同步和非同步不是很理解,直到在實踐中遇到問題才明白這是怎麼一回事。那麼就根據這個實際的問題來說說自己對ajax非同步與同步的理解。問題的起因是這樣的,在做乙個專案當中有這樣乙個需求 上的一些鏈結有內外網顯示許可權,有些鏈結當用內網訪問時可以點開檢視,...
同步和非同步
同步執行模式 所謂同步執行模式,是指語句在同步執行模式下,將始終保持對程式流的控制,直至 程式結束。如查詢操作,客戶機上的應用程式在向伺服器發出查詢操作的指令後,將 一直等待伺服器將查詢結果返回客戶機端,然後才繼續進行下一步操作。眾所周知,應用程式要從乙個大表中刪除所有的記錄將是非常耗時的,如果應用...
同步和非同步
同步互動 是指傳送乙個請求,需要等待返回,然後才能傳送另乙個請求,是乙個需要等待的過程。非同步互動 是指傳送乙個請求,不需要等待,隨時可以在傳送另乙個請求,是乙個不需要等待的過程。同步可以避免出現死鎖,讀髒資料的發生,一般共享某一資源的時候用,如果每個人都有修改許可權,同時修改乙個檔案,有可能使乙個...