【发布时间】:2017-11-28 03:11:50
【问题描述】:
Getting error error: ‘pthread_mutex_t’ has no member named ‘wait’ for this code无法理解为什么?我已经在上面声明了 pthread_mutex_t 互斥锁;仍然出现同样的错误。
我正在尝试实现信号量小书中给出的两相障碍。
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <time.h>
int thread_count;
pthread_mutex_t mutex;
void* MyThread(void* rank);
void* Hello(void* rank)
{
long my_rank = (long) rank;
int a = 0,i;
for(i=0;i<10;i++)
{
int n = 5;
int count = 0;
mutex = Semaphore(1)
barrier = Semaphore(0)
a = a + 0.9*MAX_INT;
printf("this is %d iteration\n",i);
mutex.wait()
count = count + 1;
mutex.signal()
if count == n: barrier.signal() //unblock ONE thread
barrier.wait()
barrier.signal()
}
}
【问题讨论】:
-
您似乎缺少几个分号。 int count = 0 为一。这看起来更像 C++ 代码,因为您无法访问 C 中的函数,例如 mutex.wait(),因为 mutex 不是类的实例
-
如何在 C 中访问?
标签: c multithreading