!831 Check return code from WaitPost::Register
Merge pull request !831 from JesseKLee/check_rcpull/831/MERGE
commit
4f612ae0e0
@ -1,38 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright 2019 Huawei Technologies Co., Ltd
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
#include "dataset/util/semaphore.h"
|
|
||||||
#include "dataset/util/task_manager.h"
|
|
||||||
|
|
||||||
namespace mindspore {
|
|
||||||
namespace dataset {
|
|
||||||
Status Semaphore::P() {
|
|
||||||
std::unique_lock<std::mutex> lck(mutex_);
|
|
||||||
return (wait_cond_.Wait(&lck, [this]() { return value_ != 0; }));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Semaphore::V() {
|
|
||||||
std::unique_lock<std::mutex> lck(mutex_);
|
|
||||||
++value_;
|
|
||||||
wait_cond_.NotifyOne();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Semaphore::Register(TaskGroup *vg) { (void)wait_cond_.Register(vg->GetIntrpService()); }
|
|
||||||
|
|
||||||
Status Semaphore::Deregister() { return (wait_cond_.Deregister()); }
|
|
||||||
|
|
||||||
void Semaphore::ResetIntrpState() { wait_cond_.ResetIntrpState(); }
|
|
||||||
} // namespace dataset
|
|
||||||
} // namespace mindspore
|
|
@ -1,49 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright 2019 Huawei Technologies Co., Ltd
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
#ifndef DATASET_UTIL_SEMAPHORE_H_
|
|
||||||
#define DATASET_UTIL_SEMAPHORE_H_
|
|
||||||
|
|
||||||
#include "dataset/util/cond_var.h"
|
|
||||||
|
|
||||||
namespace mindspore {
|
|
||||||
namespace dataset {
|
|
||||||
class TaskGroup;
|
|
||||||
|
|
||||||
class Semaphore {
|
|
||||||
public:
|
|
||||||
explicit Semaphore(int init) : value_(init) {}
|
|
||||||
|
|
||||||
virtual ~Semaphore() {}
|
|
||||||
|
|
||||||
Status P();
|
|
||||||
|
|
||||||
void V();
|
|
||||||
|
|
||||||
void Register(TaskGroup *vg);
|
|
||||||
|
|
||||||
Status Deregister();
|
|
||||||
|
|
||||||
void ResetIntrpState();
|
|
||||||
|
|
||||||
private:
|
|
||||||
int value_;
|
|
||||||
|
|
||||||
std::mutex mutex_;
|
|
||||||
CondVar wait_cond_;
|
|
||||||
};
|
|
||||||
} // namespace dataset
|
|
||||||
} // namespace mindspore
|
|
||||||
#endif // DATASET_UTIL_SEMAPHORE_H_
|
|
Loading…
Reference in new issue