通用的头文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
//系统调用错误
#define err_sys(msg) do{\
perror(msg);\
exit(1);}while(0)
//非系统调用导致的致命错误
#define err_exit(msg) do{\
fprintf(stderr, msg);\
exit(1);}while(0)
tid的一种实现是指向线程结构的指针
/* 判断是否是同一个线程 */
int pthread_equal(tid1, tid2)
/* 获取当前线程id */
pthread_t pthread_self();
/* 创建线程 */
int pthread_create(&tid, attr, func, arg); // return 0 on sucess
void *(*func)(void *); //=> func = hello;
void * hello(void *a){ return (void *)0; }
/* 线程主动退出 */
//rval为返回值,可以为NULL
void pthread_exit(rval); // 等价于 return (void *)rval;
/* 阻塞并等待线程退出 */
//return 0 on sucess
//把当前线程置于分离状态
//若tid线程分离,返回EINVAL
int pthread_join(tid, void **rval_ptr);
void *rval = *rval_ptr;
/* 请求取消其他线程 */
//return 0 on sucess
int pthread_cancel(tid);
/* 退出时的钩子函数 */
void pthread_cleanup_push(func, args);
void pthread_cleanup_pop(execute); //execute > 0调用函数并从链表中删除
/* 分离线程 */
//线程结束时直接清除终止状态信息
// return 0 on sucess
int pthread_detach(tid);
互斥量api
// return 0 on sucess for all
/* 初始化和销毁 */
int pthread_mutex_init(&mutex, attr_ptr);
int pthread_mutex_destory(mutex_ptr);
/* 加锁解锁 */
int pthread_mutex_lock(mutex_ptr);
int pthread_mutex_unlock(mutex_ptr);
int pthread_mutex_trylock(mutex_ptr); //非阻塞
#include <time.h>
int pthread_mutex_timedlock(mutptr, timespec_ptr);
来源:CSDN
作者:qq_42095177
链接:https://blog.csdn.net/qq_42095177/article/details/104736413