Created
September 4, 2021 18:28
-
-
Save menangen/853d9863afa73f2adb2a542b7717c3b3 to your computer and use it in GitHub Desktop.
Swift 5.5 Concurrency
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// Created by menangen on 04.09.2021. | |
// | |
import Foundation | |
print("Hello, World!") | |
let t = Task(priority: .background, operation: { return 2 } ) | |
let handle = Task { | |
return await t.value | |
} | |
func listPhotos(inGallery name: String) async -> [String] { | |
await Task.sleep(500_000_000) // 1/2 seconds | |
return ["IMG001", "IMG99", "IMG0404"] | |
} | |
actor TemperatureLogger { | |
let label: String | |
var measurements: [Int] | |
private(set) var max: Int | |
init(label: String, measurement: Int) { | |
self.label = label | |
self.measurements = [measurement] | |
self.max = measurement | |
print("TemperatureLogger thread:", Thread.current) | |
} | |
} | |
let logger = TemperatureLogger(label: "Outdoors", measurement: 25) | |
Task { | |
Thread.sleep(forTimeInterval: 2) | |
print("Task thread:", Thread.current) | |
let result = await listPhotos(inGallery: "New") | |
print("Res:", result) | |
print(await logger.max) | |
} | |
sleep(4) | |
print("End") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment