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
import Foundation | |
@propertyWrapper | |
public struct ThreadLocal<Value> { | |
private let defaultValue: () -> Value | |
private let name: String | |
public init(wrappedValue: @autoclosure @escaping () -> Value) { | |
self.defaultValue = wrappedValue | |
self.name = UUID().uuidString |
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
var greeting = "Hello, playground" | |
print(greeting, ProcessInfo.processInfo.processorCount) | |
defer { | |
print(greeting) | |
} | |
for i in 0..<30 { | |
Task.detached { | |
print("detached", i) | |
sleep(1) |
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
import Foundation | |
enum MyValue { | |
@TaskLocal static var foo: Int = 0 | |
} | |
func myFunc(@_inheritActorContext _ op: @Sendable @escaping () async -> ()) async { | |
await withCheckedContinuation { c in | |
DispatchQueue.global().async { | |
Task { |
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
import Foundation | |
func mySleep(seconds: Int) async { | |
await withCheckedContinuation { c in | |
DispatchQueue.global().asyncAfter(deadline: .now() + TimeInterval(seconds)) { | |
c.resume() | |
} | |
} | |
} |
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
import Foundation | |
func brokenTask() async { | |
await withCheckedContinuation { (c) in | |
// キャンセルシグナルが握りつぶされていて正しく中断しない処理 | |
Task { | |
try await Task.sleep(for: .seconds(5)) | |
c.resume() | |
} | |
} |
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
public struct RandomUInt8Sequence: Sequence { | |
@usableFromInline var count: Int | |
public init(count: Int) { | |
self.count = count | |
} | |
public func makeIterator() -> Iterator { | |
Iterator(self) | |
} | |
public struct Iterator: IteratorProtocol { |
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
import Foundation | |
@dynamicMemberLookup | |
struct Concat<L: Decodable, R: Decodable>: Decodable { | |
init(left: L, right: R) { | |
self.left = left | |
self.right = right | |
} | |
private var left: L | |
private var right: R |
OlderNewer