LoginSignup
20
20

More than 5 years have passed since last update.

簡単マルチスレッド(というより遅延バックグラウンド処理?)

Posted at

時間のかかる処理だからバックグラウンドで処理して、終わったらメインスレッドで処理したい。
そんなcocos2d−xプログラマーの願いを叶えるプログラムが、

http://t-kashima.hateblo.jp/entry/2014/07/10/021715
t-kashimaさん、ありがとうございます。

    auto th = std::thread([](){
        // ここで重い処理

        Director::getInstance()->getScheduler()->performFunctionInCocosThread([](){
            // この中はメインスレッド
        });
    });
    th.detach();

th.detach();を忘れるとスレッドのエラー出るよ。
こんな感じの

\#0 0x00007fff88df8212 in __pthread_kill ()

ちなみに、メインループ外のメモリ管理は面倒です。
(ObjCではメインループじゃないとautoreleaseが効かなかったりしたし)

なので、ラムダのキャプチャの部分([]でくくる部分)はできるだけコピーにした方がいいと思われる。(つまり[&]とかは避ける)

20
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
20