结合自己的项目(一个SDK代表一个进程,在SDK中存在着多个线程,比如中断处理、NPM CLI采样线程等等)
1.进程
linux用进程调度器来觉得将时间片分配给哪一个进程
进程的优先级可以通过nice值区分:nice/renice命令可以修改nice值(值越小,优先级越高)
2.父进程中调用wait/waitpid函数等待子进程的结束
子进程结束时,与父进程的联系还在,知道父进程终止或者调用wait才结束;所以,如果父进程在子进程前先终止,子进程会变为僵尸进程(需要避免僵尸进程的出现)
3.信号(用于进程之间发送消息的简单方式)
信号是由于某些错误事件而产生的。信号对应的操作有:生产、捕获、响应、忽略
如果进程收到一个信号,但是事先没有安排捕捉动作,进程会立刻终止(shell可以Ctrl+C或者kill命令的原理就是这个)
4.linux线程
4.1线程查看
在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程
“SID”栏表示线程ID,而“CMD”栏则显示了线程名称
4.2线程函数
pthread_create用来创建一个线程
pthread_join用来等待一个线程的结束
pthread_exit终止调用它的线程并返回一个指向某个对象的指针
设置线程属性
pthread_attr_init和pthread_attr_destory
取消一个线程:pthread_cancel
4.3线程同步
信号量sem 英[ˈseməfɔ:(r)]
互斥量mutex 英[m'ju:teks]