2012-01-28 68 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

相關問題