// sets success to false if failed, true if succeeded. Return value is undefined if "success" is false. T tryGet(bool &success){ T ret = 0; if (ready.tryWait()) { R_ASSERT(queue.pop(ret)); success = true; } else { success = false; } return ret; }