From 5f0551424134534a795d15817dad581194add939 Mon Sep 17 00:00:00 2001 From: ling Date: Thu, 11 Mar 2021 11:04:55 +0800 Subject: [PATCH] Mindrt Status Bug --- mindspore/core/mindrt/include/async/collect.h | 4 ++-- mindspore/core/mindrt/include/async/future.h | 18 +++++++++--------- .../core/mindrt/include/async/future_base.h | 4 ++-- mindspore/core/mindrt/include/async/status.h | 12 ++++++------ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/mindspore/core/mindrt/include/async/collect.h b/mindspore/core/mindrt/include/async/collect.h index 9dac31c577f..73b95239eac 100644 --- a/mindspore/core/mindrt/include/async/collect.h +++ b/mindspore/core/mindrt/include/async/collect.h @@ -62,7 +62,7 @@ class Collected { void Discarded() { auto iter = futures.begin(); for (; iter != futures.end(); ++iter) { - iter->SetFailed(Status::KERROR); + iter->SetFailed(MindrtStatus::KERROR); } } @@ -91,7 +91,7 @@ class Collected { template inline Future> Collect(const std::list> &futures) { if (futures.empty()) { - return std::list(); + return Future(std::list()); } Promise> *promise = new (std::nothrow) Promise>(); diff --git a/mindspore/core/mindrt/include/async/future.h b/mindspore/core/mindrt/include/async/future.h index aeaed23b3ef..f7561f6f95f 100644 --- a/mindspore/core/mindrt/include/async/future.h +++ b/mindspore/core/mindrt/include/async/future.h @@ -44,7 +44,7 @@ class Option; template class Future : public FutureBase { public: - typedef Status WaitForStatus; + typedef MindrtStatus WaitForStatus; typedef typename FutureData::CompleteCallback CompleteCallback; typedef typename FutureData::AbandonedCallback AbandonedCallback; typedef FutureData Data; @@ -57,22 +57,24 @@ class Future : public FutureBase { Future(Future &&f) : data(std::move(f.data)) {} - Future(const T &t) : data(new (std::nothrow) Data()) { + explicit Future(const T &t) : data(new (std::nothrow) Data()) { BUS_OOM_EXIT(data); SetValue(std::move(t)); } template - Future(const V &value) : data(new (std::nothrow) Data()) { + explicit Future(const V &value) : data(new (std::nothrow) Data()) { BUS_OOM_EXIT(data); SetValue(value); } - Future(const Status &s) : data(new (std::nothrow) Data()) { + explicit Future(const MindrtStatus &s) : data(new (std::nothrow) Data()) { BUS_OOM_EXIT(data); SetFailed(s.GetCode()); } + explicit Future(const std::shared_ptr &t) : data(t) {} + ~Future() override {} Future &operator=(const Future &f) { @@ -123,10 +125,10 @@ class Future : public FutureBase { bool IsError() const { return data->status.IsError(); } - Status GetStatus() const { return data->status; } + MindrtStatus GetStatus() const { return data->status; } int32_t GetErrorCode() const { - const Status &status_ = data->status; + const MindrtStatus &status_ = data->status; if (status_.IsError()) { return status_.GetCode(); } @@ -211,7 +213,7 @@ class Future : public FutureBase { } void SetFailed(int32_t errCode) const { - BUS_ASSERT(errCode != Status::KINIT && errCode != Status::KOK); + BUS_ASSERT(errCode != MindrtStatus::KINIT && errCode != MindrtStatus::KOK); bool call = false; @@ -382,8 +384,6 @@ class Future : public FutureBase { friend class Future; friend class Promise; - Future(const std::shared_ptr &t) : data(t) {} - std::shared_ptr data; }; diff --git a/mindspore/core/mindrt/include/async/future_base.h b/mindspore/core/mindrt/include/async/future_base.h index 88d86922e65..418a422473d 100644 --- a/mindspore/core/mindrt/include/async/future_base.h +++ b/mindspore/core/mindrt/include/async/future_base.h @@ -60,7 +60,7 @@ struct FutureData { typedef std::function &)> AbandonedCallback; FutureData() - : status(Status::KINIT), + : status(MindrtStatus::KINIT), associated(false), abandoned(false), gotten(false), @@ -83,7 +83,7 @@ struct FutureData { // status of future SpinLock lock; - Status status; + MindrtStatus status; bool associated; bool abandoned; diff --git a/mindspore/core/mindrt/include/async/status.h b/mindspore/core/mindrt/include/async/status.h index 5c5701b4d4c..1b36e4f0615 100644 --- a/mindspore/core/mindrt/include/async/status.h +++ b/mindspore/core/mindrt/include/async/status.h @@ -19,7 +19,7 @@ namespace mindspore { -class Status { +class MindrtStatus { public: typedef int32_t Code; @@ -28,11 +28,11 @@ class Status { static const Code KERROR = -1; // Create a success status. - Status(int32_t c) : code(c) {} + explicit MindrtStatus(int32_t c) : code(c) {} - Status() : code(KINIT) {} + MindrtStatus() : code(KINIT) {} - virtual ~Status() {} + virtual ~MindrtStatus() {} // Returns true iff the status indicates success. bool IsInit() const { return (code == KINIT); } @@ -42,9 +42,9 @@ class Status { bool IsError() const { return (code != KINIT && code != KOK); } // Return a success status. - Status OK() const { return Status(KOK); } + MindrtStatus OK() const { return MindrtStatus(KOK); } - Status Error() const { return Status(KERROR); } + MindrtStatus Error() const { return MindrtStatus(KERROR); } void SetError() { code = KERROR;