2015-06-02 4 views

ответ

6

Это тип. Реализация под ней часто является структурой, и вы можете посмотреть в файлах заголовков, если вы действительно заботитесь о конкретной реализации библиотеки, которую используете, но эти сведения не имеют значения для ее использования, вам просто нужен тип pthread_mutex_t.

pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER; 
+0

читает файл заголовка для этого ответа, ftp: // sourceware. орг/паб/Pthreads-win32/длл-последний/включить/pthread.h –

0

pthread_mutex_t тип, поэтому он не имеет сам тип. Если вы хотите знать, что этот тип является псевдонимом, на моей машине:

struct _opaque_pthread_mutex_t { 
    long __sig; 
    char __opaque[__PTHREAD_MUTEX_SIZE__]; 
}; 

, а затем

typedef struct _opaque_pthread_mutex_t __darwin_pthread_mutex_t; 

и, наконец:

typedef __darwin_pthread_mutex_t pthread_mutex_t; 
1

От pthreadtypes.h, в моем дистрибутиве Linux его определение довольно ясно, как typedef для объединения, как определено ниже:

/* Data structures for mutex handling. The structure of the attribute 
    type is not exposed on purpose. */ 
typedef union 
{ 
    struct __pthread_mutex_s 
    { 
    int __lock; 
    unsigned int __count; 
    int __owner; 
    /* KIND must stay at this position in the structure to maintain 
     binary compatibility. */ 
    int __kind; 
    unsigned int __nusers; 
    __extension__ union 
    { 
     int __spins; 
     __pthread_slist_t __list; 
    }; 
    } __data; 
    char __size[__SIZEOF_PTHREAD_MUTEX_T]; 
    long int __align; 
} pthread_mutex_t; 

Вы должны использовать его как свой определенный тип, pthread_mutex_t, конечно, поскольку этот тип будет отличаться в зависимости от ОС/дистрибутива/т. Д.

Смежные вопросы