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(): 删除信号量

               

相关内容