错误:'pthread_mutex_t'没有名为'wait'的成员

时间:2017-11-28 03:11:50

标签: c multithreading

获取错误错误:'pthread_mutex_t'没有名为'wait'的成员,因为此代码无法理解原因?我已经在pthread_mutex_t mutex上声明了;仍然得到同样的错误。

我试图实现Semaphore书的小书中给出的两个阶段障碍。

#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()

       }

    }

1 个答案:

答案 0 :(得分:0)

pthreads是一个C API,不是面向对象的。因此,库不会使用方法导出对象,而是将指针作为参数指向的函数。

您可以致电:

创建pthread_mutex_t
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);

或将其初始化为PTHREAD_MUTEX_INITIALIZER

您可以通过以下方式获取互斥锁:

int pthread_mutex_lock(pthread_mutex_t *mutex);

并通过调用:

释放它
int pthread_mutex_unlock(pthread_mutex_t *mutex);

在您的示例中,我不知道Semaphorebarrier指的是什么。

实际上,if声明是正面的Pythonic。您是否试图将一些部分转换的Python代码推送到C编译器的喉咙?