如何在pthread_barrier_t上告诉netbeans信息

Wil*_*ill 3 c++ macos netbeans pthreads

我似乎无法让netbeans识别pthread_barrier_t类型.我可以输入#include<pthread.h>,但在pthread_barrier_t上没有运气.

以下是构建和错误:

g ++ -lpthread -c -g -MMD -MP -MF build/Debug/GNU-MacOSX/main.od -o build/Debug/GNU-MacOSX/main.o main.cpp main.cpp:32:错误:'pthread_barrier_t '没有说出一种类型

我正在使用Netbeans 7.1,我在Mac OSX 10.7.2上我可以创建没有任何编译问题的线程.

bool isNotInSteadyState()
{
    int rc = 0;
    threadData threadDataArray[NUM_THREADS];
    int dataArrayCount = 0;
    if (NUM_THREADS < ((PLATE_SIZE - 2) * (PLATE_SIZE - 2)))
    {
        for (int i = 1; i < PLATE_SIZE - 1; i += sqrt(NUM_THREADS))
        {
           for (int j = 1; j < PLATE_SIZE - 1; j += sqrt(NUM_THREADS))
           {
                threadDataArray[dataArrayCount].endY = i + sqrt(NUM_THREADS) - 1;
                threadDataArray[dataArrayCount].x = i;
                threadDataArray[dataArrayCount].endY = j + sqrt(NUM_THREADS) - 1;
                threadDataArray[dataArrayCount++].y = j;
                pthread_t* thread;

                int pthread_create(thread, NULL,isNotInSteadyStateCheckRunInParallel, &threadDataArray[dataArrayCount]);
                if (dataArrayCount >= NUM_THREADS)
                {
                    //pthread_barrier_init(pthread_barrier_t * barrier,
              //const pthread_barrierattr_t *restrict attr, NUM+THREADS);
                }
                if (rc != 0)
                {
                        fprintf(stderr, "Steady State check failed!\n");
                }
          }
       }
    }    

}
Run Code Online (Sandbox Code Playgroud)

思考?

谢谢,

osg*_*sgx 6

根据有关opengroup.org上pthread_barriers的信息,障碍在POSIX 1003.1 2004版的可选部分中定义; 选项的名称是" (ADVANCED REALTIME THREADS) ",有时更准确地称为"BAR,障碍(实时)".

此处列出所有POSIX选项

2.1.3 POSIX Conformance
POSIX System Interfaces
Run Code Online (Sandbox Code Playgroud)

系统可能支持以下符号常量表示的一个或多个选项(请参阅选项):

_POSIX_BARRIERS
Run Code Online (Sandbox Code Playgroud)

因此,只有将_POSIX_BARRIERS宏定义为正数时,才能使用pthread_barrier_t或pthrad_barrier_wait.

Mac OS X符合POSIX标准,但我找不到实现的完整选项列表.我知道Solaris也存在pthread_barrier问题.从2006年开始,苹果主要列表中有一篇文章.它表示Mac OS X中没有障碍

  • 很高兴知道.似乎对此存在相当大的混淆. (3认同)