1、pthread_create
2、pthread_join
3、sem_init sem_destroy
4、sem_post sem_wait
5、所有线程可以共同访问全局区
---------------------------------------------------------------------------------
【1】程序:静态存储在磁盘上
进程:程序动态执行时
线程:可以将进程划分成多个子任务执行
【2】线程是依附于进程存在的
多个线程共同享有进程的内存空间
其中全局区可以被所有的线程访问
【3】线程的创建
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
功能:在当前进程(主线程)内开启一个新的线程(副线程)。
参数:thread:存储线程ID
attr:NULL,默认的线程属性:8M的栈空间
start:传一个函数名,线程的执行体
arg:NULL
返回:成功返回0,失败非0
注意:编译时加 -pthread
【4】int pthread_join(pthread_t thread, void **retval);
功能:阻塞等待一个线程的退出,当该线程结束则唤醒等待
参数:thread:线程ID,指定等待的副线程
retval:承接pthread_exit返回的结果值或NULL
void pthread_exit(void *retval);
功能:用于结束一个线程
参数:retval用于给pthread_join返回一个数据,
注意:参数只能传递全局变量的地址或常量的地址或NULL
【5】无名信号量:解决线程同步问题,解决任务执行的先后顺序
int sem_init(sem_t *sem, int pshared, unsigned int value);
功能:初始化一个信号量
参数:sem:被初始化的信号量
pshared:0用于线程间同步
value:信号量的初始值
int sem_destroy(sem_t *sem);
功能:销毁信号量
int sem_wait(sem_t *sem);
功能:用于消耗一个信号量
int sem_post(sem_t *sem);
功能:用于产生一个信号量
来源:https://blog.csdn.net/Y1172215784/article/details/100030831