mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Experimental: weak subscribers
This commit is contained in:
parent
2f5848d354
commit
0fd360f481
@ -24,7 +24,7 @@ public func |> <T, U>(value: T, function: ((T) -> U)) -> U {
|
||||
}
|
||||
|
||||
private final class SubscriberDisposable<T, E>: Disposable, CustomStringConvertible {
|
||||
private let subscriber: Subscriber<T, E>
|
||||
private weak var subscriber: Subscriber<T, E>?
|
||||
|
||||
private var lock = pthread_mutex_t()
|
||||
private var disposable: Disposable?
|
||||
@ -41,15 +41,18 @@ private final class SubscriberDisposable<T, E>: Disposable, CustomStringConverti
|
||||
}
|
||||
|
||||
func dispose() {
|
||||
self.subscriber.markTerminatedWithoutDisposal()
|
||||
var subscriber: Subscriber<T, E>?
|
||||
|
||||
var disposeItem: Disposable?
|
||||
pthread_mutex_lock(&self.lock)
|
||||
disposeItem = self.disposable
|
||||
subscriber = self.subscriber
|
||||
self.subscriber = nil
|
||||
self.disposable = nil
|
||||
pthread_mutex_unlock(&self.lock)
|
||||
|
||||
disposeItem?.dispose()
|
||||
subscriber?.markTerminatedWithoutDisposal()
|
||||
}
|
||||
|
||||
public var description: String {
|
||||
|
Loading…
x
Reference in New Issue
Block a user