gpt4 book ai didi

c - OS X 上的 Pthread 和 gcc 编译问题

转载 作者:太空狗 更新时间:2023-10-29 15:12:00 24 4
gpt4 key购买 nike

我有一个脚本可以在 Linux (Ubuntu 11.04) 上正常编译,但不能在 OS X (Lion) 上编译。

gcc -pthread -o hw1 hw1.c 
hw1.c:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘barr’
hw1.c: In function ‘__syncthreads’:
hw1.c:53: error: ‘barr’ undeclared (first use in this function)
hw1.c:53: error: (Each undeclared identifier is reported only once
hw1.c:53: error: for each function it appears in.)
hw1.c:54: error: ‘PTHREAD_BARRIER_SERIAL_THREAD’ undeclared (first use in this function)
hw1.c: In function ‘parallel_psum’:
hw1.c:94: error: ‘barr’ undeclared (first use in this function)
hw1.c:107: warning: assignment from incompatible pointer type

这是代码的前 22 行:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <sys/time.h>
#include <pthread.h>
#include <assert.h>

/* create thread argument struct for thr_func() */
typedef struct _thread_data_t {
int tid;
int* ints;
int* sums;
int num_ints;
int* temp;
} thread_data_t;

const int MIN_RAND_INT = 1;
const int MAX_RAND_INT = 65000;

// pthreads barrier variable
pthread_barrier_t barr;

知道为什么会这样吗?

最佳答案

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

http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap02.html

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

_POSIX_BARRIERS

因此,只有当 _POSIX_BARRIERS 宏被定义为正数时,您才可以使用 pthread_barrier_t 或 pthread_barrier_wait。

Mac OS X 是 POSIX 兼容的,但是实现选项的完整列表无法在线获得。 There is a letter在 2006 年的 apple mainling 列表中,它说 Mac OS X 没有障碍。

我知道 Solaris 也有一些关于 pthread_barrier 的问题。

关于c - OS X 上的 Pthread 和 gcc 编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8920803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com