1 线程包含线程ID,一组寄存器的值,栈,调度优先级和策略,信号屏蔽字,errno变量,以及线程私有数据。进程的所有信息对于该进程的所有线程都是共享的,包括可执行程序文本,程序全局内存和堆内存,栈以及文件描述符。
线程可以通过pthread_self函数获得自身线程ID
#include<pthread.h> pthread_t pthread_self(void)
新增进程可以通过pthread_create函数创建
#include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void), void *restrict arg)
tidp指向的内存单元被设置为新创建线程的线程id,
attr用于指定线程的属性,现在暂时把它设为NULL,
线程从start_rtn函数的地址开始运行,strat_rtn只有一个无类型的指针参数arg,如果有多个参数,把它们放入结构体,通过arg传入
2 线程终止
#include <pthread.h> void pthread_exit(void *roal_ptr)
可以通过pthread_cancel函数取消同一进程中其他线程
void pthread_cancel(pthread_t tid)
3 线程同步
创造/消除互斥量
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); int pthread_mutex_destroy(pthread_mutex_t *mutex); #include <pthread.h> int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex);
时间: 2024-10-12 16:44:21