C++ OSX信号量故障
我在初始化信号量时遇到了问题,因为sen_init在Xcode中似乎不起作用。当我尝试使用sen_init时,调用post/wait时,信号量值不会增加或减少。但在此之前,Xcode为sen_init提供了一个警告,称它已被弃用 在读了一些书之后,我似乎需要使用sen_open而不是sen_init。我一直在它上面旋转我的轮子,因为它总是抛出一个错误:当试图创建它时,EXEC\u BAD\u ADDRESS 为什么sem_open的工作方式与init不同?我需要做什么更改才能使其正常工作C++ OSX信号量故障,c++,xcode,semaphore,C++,Xcode,Semaphore,我在初始化信号量时遇到了问题,因为sen_init在Xcode中似乎不起作用。当我尝试使用sen_init时,调用post/wait时,信号量值不会增加或减少。但在此之前,Xcode为sen_init提供了一个警告,称它已被弃用 在读了一些书之后,我似乎需要使用sen_open而不是sen_init。我一直在它上面旋转我的轮子,因为它总是抛出一个错误:当试图创建它时,EXEC\u BAD\u ADDRESS 为什么sem_open的工作方式与init不同?我需要做什么更改才能使其正常工作 #in
#include <iostream>
#include <pthread.h>
#include <semaphore.h>
using namespace std;
sem_t full, empty;
pthread_attr_t attr;
pthread_t tid;
pthread_mutex_t t_mutex;
void initStates(){
full = *sem_open("full", 0, 0);
empty = *sem_open("empty", 0, 5);
sem_init(&full, 0,0);
sem_init(&empty, 0, 5);
pthread_mutex_init(&t_mutex, NULL);
pthread_attr_init(&attr);
}
int main(int argc, const char * argv[]) {
initStates();
exit(0);
}
我以前没有使用过这些调用,但是我快速查看了,看起来需要将第二个参数int of lag设置为非0的值。您可能需要将其设置为O_CREAT 然后,您还需要两个参数,mode\u t mode和unsigned int value。模式应该类似于S_IRWXU,并且值应该是给定信号量的任何起始值