Skip to content

Commit df0572f

Browse files
committed
chore: use __has_include(<barrier>)
1 parent 6e04ac3 commit df0572f

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

tests/test_scoped_critical_section.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
#include <cassert>
77
#include <thread>
88

9-
#ifdef PYBIND11_CPP20
9+
#if defined(__has_include) && __has_include(<barrier>)
10+
# define PYBIND11_HAS_BARRIER 1
1011
# include <barrier>
12+
#endif
1113

1214
// Referenced test implementation: https://github.com/PyO3/pyo3/blob/v0.25.0/src/sync.rs#L874
1315
class BoolWrapper {
@@ -20,6 +22,7 @@ class BoolWrapper {
2022
std::atomic<bool> value_;
2123
};
2224

25+
#ifdef PYBIND11_HAS_BARRIER
2326
void test_scoped_critical_section(py::class_<BoolWrapper> &cls) {
2427
auto barrier = std::barrier(2);
2528
auto bool_wrapper = cls(false);
@@ -108,25 +111,23 @@ TEST_SUBMODULE(scoped_critical_section, m) {
108111
#else
109112
false;
110113
#endif
111-
m.attr("has_barrier") =
112-
#if defined(PYBIND11_CPP20)
113-
true;
114-
#else
115-
false;
116-
#endif
117114

118-
#ifdef PYBIND11_CPP20
119115
auto BoolWrapperClass = py::class_<BoolWrapper>(m, "BoolWrapper")
120116
.def(py::init<bool>())
121117
.def("get", &BoolWrapper::get)
122118
.def("set", &BoolWrapper::set);
123119

120+
#ifdef PYBIND11_HAS_BARRIER
121+
m.attr("has_barrier") = true;
122+
124123
m.def("test_scoped_critical_section",
125124
[&]() -> void { test_scoped_critical_section(BoolWrapperClass); });
126125
m.def("test_scoped_critical_section2",
127126
[&]() -> void { test_scoped_critical_section2(BoolWrapperClass); });
128127
m.def("test_scoped_critical_section2_same_object_no_deadlock", [&]() -> void {
129128
test_scoped_critical_section2_same_object_no_deadlock(BoolWrapperClass);
130129
});
130+
#else
131+
m.attr("has_barrier") = false;
131132
#endif
132133
}

0 commit comments

Comments
 (0)