MCPcopy Create free account
hub / github.com/Meshcapade/difflocks / Event

Class Event

extensions/include/cuMat/src/Context.h:452–552  ·  view source on GitHub ↗

* \brief A simple reference-counted wrapper around cuda events. * This class is not synchronized */

Source from the content-addressed store, hash-verified

450 * This class is not synchronized
451 */
452class Event
453{
454 cudaEvent_t event_;
455 size_t* counter_;
456
457 void release()
458 {
459 if ((counter_) && (--(*counter_) == 0))
460 {
461 delete counter_;
462 CUMAT_SAFE_CALL(cudaEventDestroy(event_));
463 }
464 }
465
466public:
467 Event()
468 : event_(nullptr)
469 , counter_(new size_t(1))
470 {
471 CUMAT_SAFE_CALL(cudaEventCreate(&event_));
472 }
473
474 Event(const Event& rhs)
475 : event_(rhs.event_)
476 , counter_(rhs.counter_)
477 {
478 assert(counter_);
479 ++(*counter_);
480 }
481
482 Event(Event&& rhs) noexcept
483 : event_(std::move(rhs.event_))
484 , counter_(std::move(rhs.counter_))
485 {
486 rhs.event_ = nullptr;
487 rhs.counter_ = nullptr;
488 }
489
490 Event& operator=(const Event& rhs)
491 {
492 release();
493 event_ = rhs.event_;
494 counter_ = rhs.counter_;
495 assert(counter_);
496 ++(*counter_);
497 return *this;
498 }
499
500 Event& operator=(Event&& rhs) noexcept
501 {
502 release();
503 event_ = std::move(rhs.event_);
504 counter_ = std::move(rhs.counter_);
505 assert(counter_);
506 rhs.event_ = nullptr;
507 rhs.counter_ = nullptr;
508 return *this;
509 }

Callers

nothing calls this directly

Calls 1

releaseFunction · 0.85

Tested by

no test coverage detected