Linux编程------线程api

萝らか妹 提交于 2020-03-08 20:24:33

通用的头文件

#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);
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!