данных и флагов готовности? почему бы передатчику и приёмнику не завести по флагу - и когда эти флаги разные, приёмник считывает данные - потом меняет флаг, а когда флаги одинаковые, передатчки помещает новые данные и меняет флаг? Чем это плохо - и вроде никакой монотонности не надо?
А в чём смысл смешения