2012-01-28 61 views
2

我似乎无法让netbeans识别pthread_barrier_t类型。我可以输入#include<pthread.h>好,但在pthread_barrier_t上没有运气。如何知道pthread_barrier_t上的netbeans信息

以下是构建和错误:

g++ -lpthread -c -g -MMD -MP -MF build/Debug/GNU-MacOSX/main.o.d -o build/Debug/GNU-MacOSX/main.o main.cpp main.cpp:32: error: 'pthread_barrier_t' does not name a type

我使用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"); 
       } 
      } 
     } 
    }  

} 

想法?

感谢,

+1

我不使用netbeans,所以我不知道你在问什么,但是pthread_barrier_t不是一个命令,它是一个命令类型。 – Duck 2012-01-28 04:31:20

+0

我更改了术语,使其更为正确 – Will 2012-01-28 04:33:59

+1

您的意思是您可以在Netbeans中获得某种'IntelliSense',或者如果您尝试使用'pthread_barrier_t',则会出现编译器/编译错误?如果是后者,请详细说明错误,工具版本和正在使用的平台。 – 2012-01-28 04:37:37

回答

6

info about pthread_barriers上opengroup.org,障碍在POSIX 1003.1 2004版的可选部分定义的;选项的名称是“(ADVANCED REALTIME THREADS)”,有时更确切地称为“BAR,障碍(实时)”。

所有POSIX选项列here

2.1.3 POSIX Conformance 
POSIX System Interfaces 

The system may support one or more options (see Options) denoted by the following symbolic constants:

_POSIX_BARRIERS 

所以,只有当_POSIX_BARRIERS宏定义为正数,则可以使用pthread_barrier_t或pthrad_barrier_wait。

Mac OS X符合POSIX标准,但我找不到完整的选项列表。我知道Solaris也有pthread_barrier问题。 There is a post从2006年开始在苹果的主要列表中。它说在Mac OS X中没有任何障碍。

+2

很高兴知道。这似乎存在相当多的混淆。 – Duck 2012-01-28 05:17:37

+0

然后一定要提出问题的要点!谢谢。 – Will 2012-09-23 04:32:57

相关问题