linux,linux命令大全
linux,linux命令大全
参考:www.cnblogs.com/forstudy/archive/2012/04/05/2433853.html
一 进程与线程
进程: 系统中程序执行和资源分配的基本单位 每个进程有自己的数据段、代码段和堆栈段 在进行切换时需要有比较复杂的上下文切换 线程: 线程有独立的栈段/errno/线程ID/信号掩码 线程共享当前工作目录/代码段/数据段/描述字/信号处理/用户ID/组ID 上下文切换开销, 比创建进程小很多 处理器调度的最小单元,也称为轻量级进程 二 线程相关的函数 头文件:#include <pthread.h> 1. pthread_t pthread_self(void); 2. int pthread_equal(pthread_t tid1 , pthread_t tid2); 3. 创建线程 •调用该线程函数的入口点 •使用函数pthread_create(),线程创建后,就开始运行相关的线程函数 4. 退出线程 •在线程函数运行完后,该线程也就退出了 •或使用函数pthread_exit(),这是线程的主动行为 •不能使用exit() 5.等待线程•由于一个进程中的多个线程是共享数据段的,通常在线程退出之后,退出线程所占用的资源并不会随着线程的终止而得到释放
•pthread_join()函数
类似进程的wait()/waitpid()函数,用于将当前线程挂起来等待线程的结束 是一个线程阻塞的函数,调用它的线程一直等待到被等待的线程结束为止 函数返回时,被等待线程的资源就被收回 6. 取消线程 •在别的线程中要终止另一个线程 •pthread_cancel()函数 •被取消的线程可以设置自己的取消状态 –被取消的线程接收到另一个线程的取消请求之后,是接受还是忽略这个请求 –如果接受,是立刻进行终止操作还是等待某个函数的调用等 7.互斥锁 互斥锁初始化:pthread_mutex_init() 互斥锁上锁:pthread_mutex_lock() 互斥锁判断上锁:pthread_mutex_trylock() 互斥锁解锁:pthread_mutex_unlock() 消除互斥锁:pthread_mutex_destroy() 8.信号量 sem_init() 创建一个信号量,并初始化它 sem_wait()和sem_trywait(): P操作,在信号量大于零时将信号量的值减一 •区别: 若信号量小于零时,sem_wait()将会阻塞线程,sem_trywait()则会立即返回 sem_post(): V操作,将信号量的值加一同时发出信号来唤醒等待的线程 sem_getvalue(): 得到信号量的值 sem_destroy(): 删除信号量
评论暂时关闭