 			}
 		})
 	}
-
-	var spinlock = OS_SPINLOCK_INIT
-	func lock() { withUnsafeMutablePointer(&spinlock, OSSpinLockLock) }
-	func unlock() { withUnsafeMutablePointer(&spinlock, OSSpinLockUnlock) }
 }
 
 /// `concat`s `next` onto `producer`.

	func enqueueSignalProducer(producer: SignalProducer<T, E>) {
		var shouldStart = true

		lock()
		// An empty queue means the concat is idle, ready & waiting to start the
		// next producer given.
		shouldStart = self.queuedSignalProducers.isEmpty
		self.queuedSignalProducers.append(producer)
		unlock()

		if shouldStart {
			startNextSignalProducer(producer)

	let disposable: CompositeDisposable

	/// The signals waiting to be started.
	var queuedSignalProducers: Atomic<[SignalProducer<T, E>]> = Atomic([])

	init(observer: Signal<T, E>.Observer, disposable: CompositeDisposable) {
		self.observer = observer
