| 10 | enum class BarrierStatus : uint32_t { WaitAgain = 0u, WaitDone = 1u }; |
| 11 | |
| 12 | class ArrivalToken { |
| 13 | public: |
| 14 | HOST_DEVICE ArrivalToken(BarrierStatus barrier_status) |
| 15 | : barrier_status_(barrier_status) {} |
| 16 | |
| 17 | HOST_DEVICE ArrivalToken() = delete; |
| 18 | |
| 19 | HOST_DEVICE BarrierStatus get() const { |
| 20 | return barrier_status_; |
| 21 | ; |
| 22 | } |
| 23 | |
| 24 | HOST_DEVICE bool operator==(ArrivalToken const& other) const { |
| 25 | return barrier_status_ == other.get(); |
| 26 | } |
| 27 | |
| 28 | private: |
| 29 | BarrierStatus barrier_status_; |
| 30 | |
| 31 | HOST_DEVICE friend bool operator==(const ArrivalToken& left, |
| 32 | const BarrierStatus& right) { |
| 33 | return left.get() == right; |
| 34 | } |
| 35 | |
| 36 | HOST_DEVICE friend bool operator==(const BarrierStatus& left, |
| 37 | const ArrivalToken& right) { |
| 38 | return left == right.get(); |
| 39 | } |
| 40 | }; |
| 41 | |
| 42 | class ProducerToken : public ArrivalToken { |
| 43 | using ArrivalToken::ArrivalToken; |
nothing calls this directly
no outgoing calls
no test coverage detected