source:
libcfa/src/concurrency/mutex_stmt.hfa@
044ae62
Last change on this file since 044ae62 was beeff61e, checked in by , 2 years ago | |
---|---|
|
|
File size: 846 bytes |
Line | |
---|---|
1 | #pragma once |
2 | |
3 | #include "bits/algorithm.hfa" |
4 | #include "bits/defs.hfa" |
5 | |
6 | //----------------------------------------------------------------------------- |
7 | // is_lock |
8 | forall(L & | sized(L)) |
9 | trait is_lock { |
10 | // For acquiring a lock |
11 | void lock( L & ); |
12 | |
13 | // For releasing a lock |
14 | void unlock( L & ); |
15 | }; |
16 | |
17 | struct __mutex_stmt_lock_guard { |
18 | void ** lockarr; |
19 | __lock_size_t count; |
20 | }; |
21 | |
22 | static inline void ?{}( __mutex_stmt_lock_guard & this, void * lockarr [], __lock_size_t count ) { |
23 | this.lockarr = lockarr; |
24 | this.count = count; |
25 | |
26 | // Sort locks based on address |
27 | __libcfa_small_sort(this.lockarr, count); |
28 | } |
29 | |
30 | forall(L & | is_lock(L)) { |
31 | static inline void * __get_mutexstmt_lock_ptr( L & this ) { return &this; } |
32 | static inline L __get_mutexstmt_lock_type( L & this ) {} |
33 | static inline L __get_mutexstmt_lock_type( L * this ) {} |
34 | } |
Note:
See TracBrowser
for help on using the repository browser.