blob: 6d73d357635af3b0fd418ec9723b5b324ea9b291 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
cdef extern from "<barrier>" namespace "std" nogil:
# Note on thread safety:
# For any of the blocking functions here you should be very
# careful to ensure that you are not deadlocked on the GIL.
cdef cppclass barrier[CompletionFunction = *]:
cppclass arrival_token:
pass
barrier(ptrdiff_t expected) except+
# We *really* advise that CompletionFunction is nogil (but because it's a template, can't enforce it)
barrier(ptrdiff_t expected, CompletionFunction f) except+
arrival_token arrive() except+
arrival_token arrive(ptrdiff_t n) except+
void wait(arrival_token t) except+
void arrive_and_wait() except+
void arrive_and_drop() except+
ptrdiff_t max()
|