Merge "Fix flaky GNSS VTS" into main

This commit is contained in:
Treehugger Robot 2024-06-13 23:14:00 +00:00 committed by Android (Google) Code Review
commit fc324f7e00
2 changed files with 20 additions and 14 deletions

View file

@ -146,15 +146,18 @@ void GnssMeasurementInterface::stop() {
mIsActive = false;
mGnss->setGnssMeasurementEnabled(false);
mThreadBlocker.notify();
for (auto iter = mThreads.begin(); iter != mThreads.end(); ++iter) {
for (auto iter = mThreads.begin(); iter != mThreads.end();) {
if (iter->joinable()) {
mFutures.push_back(std::async(std::launch::async, [this, iter] {
iter->join();
mThreads.erase(iter);
}));
} else {
mThreads.erase(iter);
// Store the thread object by value
std::thread threadToMove = std::move(*iter);
mFutures.push_back(std::async(std::launch::async,
[threadToMove = std::move(threadToMove)]() mutable {
ALOGD("joining thread");
threadToMove.join();
}));
}
iter = mThreads.erase(iter);
}
}

View file

@ -90,15 +90,18 @@ void GnssNavigationMessageInterface::stop() {
ALOGD("stop");
mIsActive = false;
mThreadBlocker.notify();
for (auto iter = mThreads.begin(); iter != mThreads.end(); ++iter) {
for (auto iter = mThreads.begin(); iter != mThreads.end();) {
if (iter->joinable()) {
mFutures.push_back(std::async(std::launch::async, [this, iter] {
iter->join();
mThreads.erase(iter);
}));
} else {
mThreads.erase(iter);
// Store the thread object by value
std::thread threadToMove = std::move(*iter);
mFutures.push_back(std::async(std::launch::async,
[threadToMove = std::move(threadToMove)]() mutable {
ALOGD("joining thread");
threadToMove.join();
}));
}
iter = mThreads.erase(iter);
}
}