c/c++语言开发共享什么时候摧毁pthread屏障是否安全?

如果我有一个初始化的pthread_barrier_t,什么时候可以安全地销毁它? 以下示例是否安全?

pthread_barrier_t barrier; ... int rc = pthread_barrier_wait(b); if (rc != PTHREAD_BARRIER_SERIAL_THREAD && rc != 0){ perror("pthread_barrier_wait"); exit(1); } if (id == 0){ if(pthread_barrier_destroy(&(threads[t_root].info.tmp_barrier))){ perror("pthread_barrier_destroy"); exit(1); } } 

    pthread_barrier_wait()返回后,所有线程都将触及障碍并正在继续。 由于只有一个线程被赋予PTHREAD_BARRIER_SERIAL_THREAD返回值,因此可以安全地使用它来有条件地包装破坏代码,如下所示:

     int rc = pthread_barrier_wait(&b) if ( rc == PTHREAD_BARRIER_SERIAL_THREAD ) { pthread_barrier_destroy(&b); } 

    另外,请注意,如果屏障正在使用中, pthread_barrier_destroy()将返回EBUSY的结果(即另一个线程调用了pthread_barrier_wait() )。

      以上就是c/c++开发分享什么时候摧毁pthread屏障是否安全?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560038.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐