mirror of
https://github.com/Z3Prover/z3
synced 2025-05-12 02:04:43 +00:00
ensure limit children are safe for race conditions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
f8a804ba56
commit
4132fc2d91
6 changed files with 51 additions and 33 deletions
|
@ -57,15 +57,47 @@ void reslimit::pop() {
|
|||
m_cancel = false;
|
||||
}
|
||||
|
||||
void reslimit::cancel() {
|
||||
m_cancel = true;
|
||||
for (unsigned i = 0; i < m_children.size(); ++i) {
|
||||
m_children[i]->cancel();
|
||||
char const* get_cancel_msg() const {
|
||||
if (m_cancel) {
|
||||
return Z3_CANCELED_MSG;
|
||||
}
|
||||
else {
|
||||
return Z3_MAX_RESOURCE_MSG;
|
||||
}
|
||||
}
|
||||
void reslimit::reset_cancel() {
|
||||
m_cancel = false;
|
||||
for (unsigned i = 0; i < m_children.size(); ++i) {
|
||||
m_children[i]->reset_cancel();
|
||||
|
||||
void reslimit::push_child(reslimit* r) {
|
||||
#pragma omp critical (reslimit_cancel)
|
||||
{
|
||||
m_children.push_back(r);
|
||||
}
|
||||
}
|
||||
|
||||
void reslimit::pop_child() {
|
||||
#pragma omp critical (reslimit_cancel)
|
||||
{
|
||||
m_children.pop_back();
|
||||
}
|
||||
}
|
||||
|
||||
void reslimit::cancel() {
|
||||
#pragma omp critical (reslimit_cancel)
|
||||
{
|
||||
set_cancel(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void reslimit::reset_cancel() {
|
||||
#pragma omp critical (reslimit_cancel)
|
||||
{
|
||||
set_cancel(false);
|
||||
}
|
||||
}
|
||||
|
||||
void reslimit::set_cancel(bool f) {
|
||||
m_cancel = f;
|
||||
for (unsigned i = 0; i < m_children.size(); ++i) {
|
||||
m_children[i]->set_cancel(f);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue