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)
思考?
谢谢,
根据有关opengroup.org上pthread_barriers的信息,障碍在POSIX 1003.1 2004版的可选部分中定义; 选项的名称是" (ADVANCED REALTIME THREADS) ",有时更准确地称为"BAR,障碍(实时)".
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中没有障碍
| 归档时间: |
|
| 查看次数: |
1711 次 |
| 最近记录: |