mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 05:05:11 +00:00
baa540ec34
* Support free-threaded CPython (PEP 703) Some additional locking is added in the free-threaded build when `Py_GIL_DISABLED` is defined: - Most accesses to internals are protected by a single mutex - The registered_instances uses a striped lock to improve concurrency Pybind11 modules can indicate support for running with the GIL disabled by calling `set_gil_not_used()`. * refactor: use PYBIND11_MODULE (#11) Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * Address code review * Suppress MSVC warning * Changes from review * style: pre-commit fixes * `py::mod_gil_not_used()` suggestion. * Update include/pybind11/pybind11.h --------- Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ralf W. Grosse-Kunstleve <rwgk@google.com>
21 lines
567 B
C++
21 lines
567 B
C++
#include <pybind11/pybind11.h>
|
|
|
|
namespace py = pybind11;
|
|
|
|
/* Simple test module/test class to check that the referenced internals data of external pybind11
|
|
* modules aren't preserved over a finalize/initialize.
|
|
*/
|
|
|
|
PYBIND11_MODULE(external_module, m, py::mod_gil_not_used()) {
|
|
class A {
|
|
public:
|
|
explicit A(int value) : v{value} {};
|
|
int v;
|
|
};
|
|
|
|
py::class_<A>(m, "A").def(py::init<int>()).def_readwrite("value", &A::v);
|
|
|
|
m.def("internals_at",
|
|
[]() { return reinterpret_cast<uintptr_t>(&py::detail::get_internals()); });
|
|
}
|