39 , allocated_m(
false) {}
43 operator MPI_Win*()
noexcept {
return &win_m; }
45 operator const MPI_Win*()
const noexcept {
return &win_m; }
47 template <std::contiguous_iterator Iter>
48 bool create(
const Communicator& comm, Iter first, Iter last);
50 template <std::contiguous_iterator Iter>
51 bool attach(
const Communicator& comm, Iter first, Iter last);
53 template <std::contiguous_iterator Iter>
54 bool detach(Iter first);
56 void fence(
int asrt = 0);
58 template <std::contiguous_iterator Iter>
59 void put(Iter first, Iter last,
int dest,
unsigned int pos,
63 void put(
const T* value,
int dest,
unsigned int pos,
Request* request =
nullptr);
65 template <std::contiguous_iterator Iter>
66 void get(Iter first, Iter last,
int source,
unsigned int pos,
70 void get(T* value,
int source,
unsigned int pos,
Request* request =
nullptr);
80 Exclusive = MPI_LOCK_EXCLUSIVE,
81 Shared = MPI_LOCK_SHARED
84 void lock(
int locktype,
int rank,
int asrt = 0);
86 void lockall(
int asrt = 0);
88 void unlock(
int rank);