Skip to content

Instantly share code, notes, and snippets.

@menangen
Created September 4, 2021 18:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save menangen/853d9863afa73f2adb2a542b7717c3b3 to your computer and use it in GitHub Desktop.
Save menangen/853d9863afa73f2adb2a542b7717c3b3 to your computer and use it in GitHub Desktop.
Swift 5.5 Concurrency
//
// 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