 	}
 
 	deinit {
-		dispatch_sync(queue) {
+		dispatch_barrier_sync(queue) {
 			for sink in self.sinks {
 				sink.put(.Completed)
 			}

///
/// Instances of this class are thread-safe.
public final class ObservableProperty<T> {
	private let queue = dispatch_queue_create("org.reactivecocoa.ReactiveCocoa.ObservableProperty", DISPATCH_QUEUE_SERIAL)
	private var sinks = Bag<SinkOf<Event<T>>>()
	private var _value: T


			if let strongSelf = self {
				var token: RemovalToken?

				dispatch_barrier_sync(strongSelf.queue) {
					token = strongSelf.sinks.insert(sink)
					sink.put(.Next(Box(strongSelf._value)))
				}

				disposable.addDisposable {
					if let strongSelf = self {
						dispatch_barrier_async(strongSelf.queue) {
							strongSelf.sinks.removeValueForToken(token!)
						}
					}
