為什麼in out表示緩衝池空,而 in 1 n out表示緩衝池滿?

時間 2021-05-05 17:44:43

1樓:

"模" 的特性;當秒針和分針重合的時候表示表盤是空的,當秒針還有一格就和分針重合的時候,表示表盤是滿的

你的錯誤在於"一次性"生產,但在放的時候只能乙個乙個放,且每一次放都要檢查快取是否滿了,仔細分析最後兩次檢查和放入應該可以解決你的問題

2樓:

比如對in=out表示緩衝池空這個條件,我舉個反例:初始時in=0,out=0,假設一次性生產n個產品,暫存在緩衝池中,在存入第n個產品之前,in=n-1,存入之後,in=(n-1+1)%n=0。

此時in=out=0,按照判據應該是緩衝池空,但實際上存入了n個產品,緩衝池應該是滿的。

這個順序是不對的,應該先判斷緩衝池是否滿了,再更新in。拿你的例子來說:

在存入第n個產品之前,in=n-1

存入第n個產品

此時 (in+1)%n==out,表示緩衝池已滿,後面不能再插了

in = (in+1)%n

可以看到,儘管第3步能解釋的通,但並沒有什麼卵用,後面並沒有儲存第3步這裡的結果,而是使用了乙個count變數。

3樓:

這是迴圈陣列,所以不妨先假設只in不out,因為是一樣的。

in=out也就是他倆指向同乙個元素位置,並且表示下乙個元素in和out的位置,也就是整個陣列為空。

(in+1)%n=out表示in指標已經轉了一圈又回到了原點,也就是陣列滿了。但這個等式只是用來做判斷!你說的那種情況不可能發生!

因為out是有內容的,不可以將in指向它了。也就是說,只有空的時候他倆才可以指向同乙個位置。且這個時候不可以執行讀取的操作。

為什麼亞洲的空乘大多青春靚麗而美國的空乘基本都是大叔大媽?

我來告訴你為啥。本人效力於Delta Air Lines,達美航空。底特律基地。普通話LOD 你也不要把這個問題想的太複雜,的確美國就業的年齡歧視等等是絕對不允許的,這個和工會有一定關係,不過達美家大業大,一直以來是空乘界態度鮮明決不允許成立公會的極少數之一。所以無論工會存在與否,年齡歧視這種東西和...

為什麼萊布尼茨選用了 f x dx來表示積分而不是 f x ,其好處在哪?

ReIm 這裡並不是選用的問題,而是積分的所代表的含義使得後面必須加乙個dx。知乎上有很多大佬解釋這個問題解釋得很好,你可以去看看。這裡我就粗略地講一下,人懶,懶得配圖了。設F x 是個函式組,函式組內每乙個函式與其他函式的差都是個常數。微分的d和積分的 通俗來講相當於 和 就是做差,F x 相當於...

池化為什麼使用平均或者最大,而不是用最小池化?

所有net幾乎都非中心對稱,因此不能直接認為MaxPooling和MinPooling只是簡單的相反關係。而主流net都會使用relu或relu的變種作為activation function,這是用於產生sparse elements的,所以每次relu隻後將產生大量0 element。此時使用最...