投入データの個数をセマフォで管理しとけばいいんじゃないかな
データ投入後→セマフォを1上げる
データ取り出し前→セマフォを1下げる(データがない=セマフォが0の場合は投入される=1以上になるまでブロック)