Introduction
Details
一个进程就相当于一个主线程。
fork一个进程与create一个线程的区别:
fork进程:子进程复制父进程的进程环境。父进程结束不会影响子进程的运行。进程切换复制进程环境。
create线程:子线程共享父线程的线程环境。线程(一个主线程下的多个线程)切换不复制环境,所以线程运行快,省去了复制环境的时间。主线程运行结束,子线程的运行就无意义了。
子线程返回主线程的方法:
1.主线程等待子线程运行结束
2.用信号,比如说用主线程有一个全局变量 p=1,子线程有一 while(p) 一直在无限运行,这是主线程 p = 0,while(p) 子线程退出。
一个进程 create了几个线程,进程fork(),这是fork出的子进程不能复制父线程的线程,也就是说,fork出来的子进程只复制父现成的执行环境。
线程是一个执行体。
进程是运行环境+执行体。
ulimit -a 显示进程环境的属性
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) 4
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 7168
virtual memory (kbytes, -v) unlimited
为什么创建的线程数是有限的?
因为主线程的线程环境是有限的,默认10M,每产生一个子线程,从栈区分配内存 200K的大小给子线程,所以线程的大小是可以改变的,当然 从栈区分配的内存是可以改小的。
修改环境PATH:在/home/hailong/.bash_profile
PATH的作用,比如说在任何目录下都可以使用vi,ls等命令,是因为已经把vi.ls的程序完整路径记录在PATH里,系统会自动在PATH里查找需要运行的程序后执行。 可以把经常用到程序路径添加到PATH里,就可以在任何路径下 输入程序名,程序就能运行。