というわけで最終的な版を貼る、
https://ideone.com/G3XeAg

ProduceとConsumerそれぞれに対する起床条件を分離すた、

日本語ではいくら説明しても一向に理解の光が射さなかったボンクラ学生レヴェルの>>15でも
100行足らずのソースコードなら読めるんじゃないの
知らんけど