0001    #if os(Linux)
0002        import Glibc
0003    #else
0004        import Darwin
0005    #endif
0006    
0007    enum ConcurrencyType {
0008        case Serial
0009        case Concurrent
0010    }
0011    
0012    public protocol DispatchQueue
ConcurrentQueue.swift:32
extension ConcurrentQueue: DispatchQueue {
DispatchQueue.swift:27
extension DispatchQueue {
MainQueue.swift:30
extension MainQueue: DispatchQueue {
SerialQueue.swift:34
extension SerialQueue: DispatchQueue {
: class { 0013 0014 var identifier: String { get } 0015 0016 var events
DispatchQueue.swift:31
        events.append(event)
: [() -> ()] { get set } 0017 0018 init(identifier: String) 0019 0020 var eventMutex
DispatchQueue.swift:30
        pthread_mutex_lock(&eventMutex)
DispatchQueue.swift:32
        pthread_mutex_unlock(&eventMutex)
: pthread_mutex_t { get set } 0021 0022 var eventCondition
DispatchQueue.swift:33
        pthread_cond_signal(&eventCondition)
: pthread_cond_t { get set } 0023 0024 func run() 0025 } 0026 0027 extension DispatchQueue { 0028 0029 func addEvent(event: () -> ()) { 0030 pthread_mutex_lock(&eventMutex) 0031 events.append(event) 0032 pthread_mutex_unlock(&eventMutex) 0033 pthread_cond_signal(&eventCondition) 0034 } 0035 0036 func runBlock
ConcurrentQueue.swift:56
                    self.runBlock(event, onThread: &thread)
ConcurrentQueue.swift:62
        runBlock(block, onThread: &loopThread)
SerialQueue.swift:62
        self.runBlock(block, onThread: &thread)
(block: () -> (), inout onThread thread: pthread_t) { 0037 let holder = Unmanaged.passRetained(pthreadBlock(block: block)) 0038 0039 let pointer = UnsafeMutablePointer<Void>(holder.toOpaque()) 0040 0041 if pthread_create(&thread, nil, pthreadRunner, pointer ) == 0 { 0042 pthread_detach(thread) 0043 } else { 0044 print("pthread_create() error") 0045 } 0046 } 0047 0048 } 0049 0050 private class pthreadBlock
DispatchQueue.swift:37
        let holder = Unmanaged.passRetained(pthreadBlock(block: block))
DispatchQueue.swift:60
    let unmanaged = Unmanaged<pthreadBlock>.fromOpaque( COpaquePointer( arg ) )
{ 0051 0052 let block
DispatchQueue.swift:55
        self.block = block
DispatchQueue.swift:61
    unmanaged.takeUnretainedValue().block()
: () -> () 0053 0054 init
DispatchQueue.swift:37
        let holder = Unmanaged.passRetained(pthreadBlock(block: block))
( block: () -> () ) { 0055 self.block = block 0056 } 0057 } 0058 0059 private func pthreadRunner
DispatchQueue.swift:41
        if pthread_create(&thread, nil, pthreadRunner, pointer ) == 0 {
( arg: UnsafeMutablePointer<Void> ) -> UnsafeMutablePointer<Void> { 0060 let unmanaged = Unmanaged<pthreadBlock>.fromOpaque( COpaquePointer( arg ) ) 0061 unmanaged.takeUnretainedValue().block() 0062 unmanaged.release() 0063 return arg 0064 } 0065