pthread.h源码
时间: 2023-09-05 07:13:56 浏览: 75
由于pthread.h是一个标准头文件,其实现可能会因平台和系统而异。以下是Linux系统中pthread.h的部分源代码,仅供参考:
```c
#ifndef _PTHREAD_H
#define _PTHREAD_H 1
#include <features.h>
#include <sched.h>
#include <signal.h>
#include <stddef.h>
#include <time.h>
#include <bits/pthreadtypes.h>
#include <bits/sched.h>
#ifdef __cplusplus
extern "C" {
#endif
/* 线程属性类型 */
typedef struct __pthread_attr_s
{
size_t __size;
int __detachstate;
int __schedpolicy;
struct sched_param __schedparam;
int __inheritsched;
int __scope;
size_t __guardsize;
int __stackaddr_set;
void *__stackaddr;
size_t __stacksize;
} pthread_attr_t;
/* 线程类型 */
typedef struct __pthread_s
{
unsigned long int __pthread_private;
} *pthread_t;
/* 互斥锁类型 */
typedef struct
{
int __lock;
unsigned int __count;
int __owner;
} pthread_mutex_t;
/* 条件变量类型 */
typedef struct
{
int __g_signals;
int __g_waiters;
pthread_mutex_t __g_mutex;
int __g_broadcast_seq;
int __g_waiters_seq;
unsigned int __g_reserved[4];
} pthread_cond_t;
/* 锁初始化 */
#define PTHREAD_MUTEX_INITIALIZER {0, 0, 0}
/* 线程属性初始化 */
#define PTHREAD_ATTR_DEFAULT ((pthread_attr_t) {0, 0, 0, {0}, 0, 0, 0, 0, NULL, 0})
/* 函数声明 */
int pthread_attr_init(pthread_attr_t *attr);
int pthread_attr_destroy(pthread_attr_t *attr);
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
int pthread_attr_setinheritsched(pthread_attr_t *attr, int inheritsched);
int pthread_attr_setscope(pthread_attr_t *attr, int scope);
int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate);
int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy);
int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param);
int pthread_attr_getinheritsched(const pthread_attr_t *attr, int *inheritsched);
int pthread_attr_getscope(const pthread_attr_t *attr, int *scope);
int pthread_attr_getguardsize(const pthread_attr_t *attr, size_t *guardsize);
int pthread_attr_getstackaddr(const pthread_attr_t *attr, void **stackaddr);
int pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize);
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
int pthread_join(pthread_t thread, void **retval);
int pthread_detach(pthread_t thread);
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
int pthread_mutex_destroy(pthread_mutex_t *mutex);
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_trylock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr);
int pthread_cond_destroy(pthread_cond_t *cond);
int pthread_cond_signal(pthread_cond_t *cond);
int pthread_cond_broadcast(pthread_cond_t *cond);
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime);
#ifdef __cplusplus
}
#endif
#endif /* _PTHREAD_H */
```
这里只列举了部分常用函数和类型的声明,具体实现可以在系统的pthread库中找到。