Browse Source

!13141 Mindrt Status Bug

From: @ling_qiao_min
Reviewed-by: 
Signed-off-by:
tags/v1.2.0-rc1
mindspore-ci-bot Gitee 5 years ago
parent
commit
8eb3e396e5
4 changed files with 19 additions and 19 deletions
  1. +2
    -2
      mindspore/core/mindrt/include/async/collect.h
  2. +9
    -9
      mindspore/core/mindrt/include/async/future.h
  3. +2
    -2
      mindspore/core/mindrt/include/async/future_base.h
  4. +6
    -6
      mindspore/core/mindrt/include/async/status.h

+ 2
- 2
mindspore/core/mindrt/include/async/collect.h View File

@@ -62,7 +62,7 @@ class Collected {
void Discarded() { void Discarded() {
auto iter = futures.begin(); auto iter = futures.begin();
for (; iter != futures.end(); ++iter) { for (; iter != futures.end(); ++iter) {
iter->SetFailed(Status::KERROR);
iter->SetFailed(MindrtStatus::KERROR);
} }
} }


@@ -91,7 +91,7 @@ class Collected {
template <typename T> template <typename T>
inline Future<std::list<T>> Collect(const std::list<Future<T>> &futures) { inline Future<std::list<T>> Collect(const std::list<Future<T>> &futures) {
if (futures.empty()) { if (futures.empty()) {
return std::list<T>();
return Future(std::list<T>());
} }


Promise<std::list<T>> *promise = new (std::nothrow) Promise<std::list<T>>(); Promise<std::list<T>> *promise = new (std::nothrow) Promise<std::list<T>>();


+ 9
- 9
mindspore/core/mindrt/include/async/future.h View File

@@ -44,7 +44,7 @@ class Option;
template <typename T> template <typename T>
class Future : public FutureBase { class Future : public FutureBase {
public: public:
typedef Status WaitForStatus;
typedef MindrtStatus WaitForStatus;
typedef typename FutureData<T>::CompleteCallback CompleteCallback; typedef typename FutureData<T>::CompleteCallback CompleteCallback;
typedef typename FutureData<T>::AbandonedCallback AbandonedCallback; typedef typename FutureData<T>::AbandonedCallback AbandonedCallback;
typedef FutureData<T> Data; typedef FutureData<T> Data;
@@ -57,22 +57,24 @@ class Future : public FutureBase {


Future(Future<T> &&f) : data(std::move(f.data)) {} Future(Future<T> &&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); BUS_OOM_EXIT(data);
SetValue(std::move(t)); SetValue(std::move(t));
} }


template <typename V> template <typename V>
Future(const V &value) : data(new (std::nothrow) Data()) {
explicit Future(const V &value) : data(new (std::nothrow) Data()) {
BUS_OOM_EXIT(data); BUS_OOM_EXIT(data);
SetValue(value); 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); BUS_OOM_EXIT(data);
SetFailed(s.GetCode()); SetFailed(s.GetCode());
} }


explicit Future(const std::shared_ptr<Data> &t) : data(t) {}

~Future() override {} ~Future() override {}


Future<T> &operator=(const Future<T> &f) { Future<T> &operator=(const Future<T> &f) {
@@ -123,10 +125,10 @@ class Future : public FutureBase {


bool IsError() const { return data->status.IsError(); } bool IsError() const { return data->status.IsError(); }


Status GetStatus() const { return data->status; }
MindrtStatus GetStatus() const { return data->status; }


int32_t GetErrorCode() const { int32_t GetErrorCode() const {
const Status &status_ = data->status;
const MindrtStatus &status_ = data->status;
if (status_.IsError()) { if (status_.IsError()) {
return status_.GetCode(); return status_.GetCode();
} }
@@ -211,7 +213,7 @@ class Future : public FutureBase {
} }


void SetFailed(int32_t errCode) const { 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; bool call = false;


@@ -382,8 +384,6 @@ class Future : public FutureBase {
friend class Future; friend class Future;
friend class Promise<T>; friend class Promise<T>;


Future(const std::shared_ptr<Data> &t) : data(t) {}

std::shared_ptr<Data> data; std::shared_ptr<Data> data;
}; };




+ 2
- 2
mindspore/core/mindrt/include/async/future_base.h View File

@@ -60,7 +60,7 @@ struct FutureData {
typedef std::function<void(const Future<T> &)> AbandonedCallback; typedef std::function<void(const Future<T> &)> AbandonedCallback;


FutureData() FutureData()
: status(Status::KINIT),
: status(MindrtStatus::KINIT),
associated(false), associated(false),
abandoned(false), abandoned(false),
gotten(false), gotten(false),
@@ -83,7 +83,7 @@ struct FutureData {


// status of future // status of future
SpinLock lock; SpinLock lock;
Status status;
MindrtStatus status;


bool associated; bool associated;
bool abandoned; bool abandoned;


+ 6
- 6
mindspore/core/mindrt/include/async/status.h View File

@@ -19,7 +19,7 @@


namespace mindspore { namespace mindspore {


class Status {
class MindrtStatus {
public: public:
typedef int32_t Code; typedef int32_t Code;


@@ -28,11 +28,11 @@ class Status {
static const Code KERROR = -1; static const Code KERROR = -1;


// Create a success status. // 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. // Returns true iff the status indicates success.
bool IsInit() const { return (code == KINIT); } bool IsInit() const { return (code == KINIT); }
@@ -42,9 +42,9 @@ class Status {
bool IsError() const { return (code != KINIT && code != KOK); } bool IsError() const { return (code != KINIT && code != KOK); }


// Return a success status. // 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() { void SetError() {
code = KERROR; code = KERROR;


Loading…
Cancel
Save