24348

[code]

    private var queue: dispatch_queue_t = dispatch_queue_create("test.test.testcall", DISPATCH_QUEUE_SERIAL)
    
    func test() {
        NSLog(（１）)
        dispatch_async(queue, {
            NSLog(（２）)
        })
    }
    
[/code]

（１）、（２）のログとして以下のようなログが出力されます。  
[数字１:数字２]ログ

数字２についてはスレッドIDだと思うので、上記のような処理の場合、異なる値が出力されるものと考えているのですが、認識違いがありますでしょうか。

swift内で上記のようにすると、確かにログの「数字２」の部分は異なる値が出力されるのですが、

・swift  
・C＋＋クラスを動かすためのObje-C＋＋  
・C＋＋(拡張子はmm)  
swift→Obje-C++→C++→Obje-C++→swiftの流れで処理させようとした際に、

・C＋＋クラスを動かすためのObje-C＋＋  
ここで同じ処理を入れても、  
（１）、（２）のログ「数字２」は同じものとなってしまい、よくわからなくなってしましました。。。  
Obje-C++でも同じようにdispatch_async()を利用することでスレッドIDが変わるものと考えているのですが  
異なるのでしょうか。  
それとも、変わらないこともあるのでしょうか。


CC BY-SA 3.0
2016-04-25T13:23:57.593
24337
2016-04-26T02:04:44.463
2016-04-25T13:30:06.253
12842
12842
question
swift
dispatch_async内の処理について


> 数字２についてはスレッドIDだと思うので、上記のような処理の場合、異なる値が出力されるものと考えているのですが、認識違いがありますでしょうか。

test()をqueueのスレッドで呼び出せば、(1),(2)は同じスレッドIDになるでしょうね。  
試しに、(2)の箇所でtest()を呼び出してみましょう。（無限ループになりますが）


CC BY-SA 3.0
2016-04-26T02:04:44.463
24348
2016-04-26T02:04:44.463
8601
24337
answer