質問: dispatch_queue_create("test.test.testcall", DISPATCH_QUEUE_SERIAL) func test() { NSLog((1)) dispatch_async(queue, { NSLog((2)) }) } ``` (1)、(2)のログとして以下のようなログが出力されます。 [数字1:数字2]ログ 数字2についてはスレッドIDだと思うので、上記のような処理の場合、異なる値が出力されるものと考えているのですが、認識違いがありますでしょうか。 swift内で上記のようにすると、確かにログの「数字2」の部分は異なる値が出力されるのですが、 ・swift ・C++クラスを動かすためのObje-C++ ・C++(拡張子はmm) swift→Obje-C++→C++→Obje-C++→swiftの流れで処理させようとした際に、 ・C++クラスを動かすためのObje-C++ ここで同じ処理を入れても、 (1)、(2)のログ「数字2」は同じものとなってしまい、よくわからなくなってしましました。。。 Obje-C++でも同じようにdispatch_async()を利用することでスレッドIDが変わるものと考えているのですが 異なるのでしょうか。 それとも、変わらないこともあるのでしょうか。
回答: > > 数字2についてはスレッドIDだと思うので、上記のような処理の場合、異なる値が出力されるものと考えているのですが、認識違いがありますでしょうか。 > > > test()をqueueのスレッドで呼び出せば、(1),(2)は同じスレッドIDになるでしょうね。 試しに、(2)の箇所でtest()を呼び出してみましょう。(無限ループになりますが)