File tree Expand file tree Collapse file tree 2 files changed +39
-0
lines changed
stdlib/public/Synchronization Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -92,6 +92,8 @@ add_swift_target_library(swiftSynchronization ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES
92
92
${SWIFT_SYNCHRONIZATION_WASM_SOURCES}
93
93
SWIFT_SOURCES_DEPENDS_WINDOWS
94
94
${SWIFT_SYNCHRONIZATION_WINDOWS_SOURCES}
95
+ SWIFT_SOURCES_DEPENDS_FREESTANDING
96
+ Mutex/MutexUnavailable.swift
95
97
96
98
SWIFT_MODULE_DEPENDS_OSX
97
99
Darwin
Original file line number Diff line number Diff line change
1
+ //===----------------------------------------------------------------------===//
2
+ //
3
+ // This source file is part of the Swift Atomics open source project
4
+ //
5
+ // Copyright (c) 2024 Apple Inc. and the Swift project authors
6
+ // Licensed under Apache License v2.0 with Runtime Library Exception
7
+ //
8
+ // See https://swift.org/LICENSE.txt for license information
9
+ // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10
+ //
11
+ //===----------------------------------------------------------------------===//
12
+
13
+ /// A synchronization primitive that protects shared mutable state via
14
+ /// mutual exclusion.
15
+ ///
16
+ /// The `Mutex` type offers non-recursive exclusive access to the state
17
+ /// it is protecting by blocking threads attempting to acquire the lock.
18
+ /// Only one execution context at a time has access to the value stored
19
+ /// within the `Mutex` allowing for exclusive access.
20
+ ///
21
+ /// An example use of `Mutex` in a class used simultaneously by many
22
+ /// threads protecting a `Dictionary` value:
23
+ ///
24
+ /// class Manager {
25
+ /// let cache = Mutex<[Key: Resource]>([:])
26
+ ///
27
+ /// func saveResouce(_ resource: Resouce, as key: Key) {
28
+ /// cache.withLock {
29
+ /// $0[key] = resource
30
+ /// }
31
+ /// }
32
+ /// }
33
+ ///
34
+ @available ( unavailable, * , message: " Mutex is not available on this platform " )
35
+ @frozen
36
+ @_staticExclusiveOnly
37
+ public struct Mutex < Value: ~ Copyable> : ~ Copyable { }
You can’t perform that action at this time.
0 commit comments