zoukankan      html  css  js  c++  java
  • Cocos2d-x——pthread的使用注意事项

    1:多线程所调用的成员方法定义为static。

    2:互斥锁(pthread_mutex_t)定义在cpp文件的开头,并且也定义为static。

    3:pthread_mutex_init方法尽量在最早的时候进行调用初始化(绝对不要在初始化之后立即开始新线程,否则pthread_mutex_lock很可能会返回22的错误,因为此时互斥量还没有初始化完成)。

    4:pthread_mutex_destroy方法尽量在最晚的匹配的时候调用(比如构造析构——配对)。

    代码:

    头文件

    public:
    pthread_t tid1;
    pthread_t tid2;

    static void* anotherTest1(void* args);
    static void* anotherTest2(void* args);

    类文件:

    static pthread_mutex_t mylock1;

    HelloWorld::HelloWorld()
    {
      pthread_mutex_init(&mylock1, NULL);
    }

    HelloWorld::~HelloWorld()
    {
      pthread_mutex_destroy(&mylock1);
    }

    void* HelloWorld::anotherTest1(void* args)
    {
      int intResult1 = pthread_mutex_lock(&mylock1);
      CCLOG("Result1:%d", intResult1);

      for(int i=0;i<=10; i++) {
        CCLOG("1-%d",i);
        //sleep(1);
      }

      pthread_mutex_unlock(&mylock1);
      return NULL;
    }

    void* HelloWorld::anotherTest2(void* args)
    {
      int intResult2 = pthread_mutex_lock(&mylock1);
      CCLOG("Result2:%d", intResult2);

      for(int j=0;j<=10; j++) {
        CCLOG("2-%d",j);
        //sleep(1);
      }

    pthread_mutex_unlock(&mylock1);
      return NULL;
    }

    void HelloWorld::menuStartNewThread(CCObject* pSender)
    {
      pthread_create(&tid1, NULL, anotherTest1, NULL);
      pthread_create(&tid2, NULL, anotherTest2, NULL);
    }

  • 相关阅读:
    How to get the IIS root path in other application.
    Web.UI.Controls与页面事件的冲突问题。
    分析在服务器上设置计时器的问题。
    首次感觉我的电脑过时了。。。。。。。。郁闷。
    Google Logos
    2005年的最后一天
    TreeView的几个使用小技
    浅淡反射问题
    The restricted headers are:
    在服务器上用Timer遇到的小问题。。。。
  • 原文地址:https://www.cnblogs.com/leonbao/p/3148929.html
Copyright © 2011-2022 走看看