От: https://www.sourceware.org/pthreads-win32/manual/pthread_mutex_init.htmlКаков тип pthread_mutex_t?
Переменные типа pthread_mutex_t также могут быть инициализированы статически,
Итак, что тип pthread_mutex_t?
От: https://www.sourceware.org/pthreads-win32/manual/pthread_mutex_init.htmlКаков тип pthread_mutex_t?
Переменные типа pthread_mutex_t также могут быть инициализированы статически,
Итак, что тип pthread_mutex_t?
Это тип. Реализация под ней часто является структурой, и вы можете посмотреть в файлах заголовков, если вы действительно заботитесь о конкретной реализации библиотеки, которую используете, но эти сведения не имеют значения для ее использования, вам просто нужен тип pthread_mutex_t
.
pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;
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;
От 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, конечно, поскольку этот тип будет отличаться в зависимости от ОС/дистрибутива/т. Д.
читает файл заголовка для этого ответа, ftp: // sourceware. орг/паб/Pthreads-win32/длл-последний/включить/pthread.h –