线程
来源:互联网 发布:javascript做表格 编辑:程序博客网 时间:2024/05/12 07:03
1、启动线程
1)计算机启动,执行第一个程序BIOS
2)然后是init进程的产生
3)之后又init进程或其子进程..等fork出来
2、线程和进程之间的小区别
1)执行代码的区别
线程一旦创建,就会默认去执行线程函数,之后如果没有被join,就从线程函数中默认结束
进程的代码会输出两次,原因是fork之后的进程父进程和子进程都会执行剩余的代码,并且对于代码的原则是如果子进程没有exec,那么实际上父子进程执行的代码应该一样,所以共用一份,如果子进程要exec,那么再复制一份,为其开辟自己的空间
2)数据域的区别
线程之间共享进程的数据,子线程还会共享主线程的变量、堆栈、地址空间等,但它还会有自己的唯一的线程ID、私有数据等
子进程虽会继承父进程的某些值,但一旦修改这些值,子进程还会有自己的空间去保存这些值
3、一个进程能开多少线程
32位操作系统支持4G大小的虚拟地址空间,Linux默认会为内核分配1G左右,剩下3G就能用了创建线程
最大线程数 = 3G / 一个线程的空间
4、如何正确使用线程?数量越多越好?
参考: LinuxC多线程求和
据实际情况而论
5、拓展
1)协程
这个概念实际上我们可以把它理解为在用户态模拟的线程,因此我们可以自己定义协程的结构,这样就使得协程的大小可以很小,而且通过程序之间的控制逻辑使得他们不一定按照顺序执行,从而便于并发,具体请参考:
协程—廖雪峰
2:并发语言Erlang
Erlang天生支持并发,这个语言1~2秒之内能并发出那么多进程(不是操作系统的概念),参考:
Erlang并发编程
3:“池”化思想
这也是并发处理一种非常简单和基本的思想,先初始化好资源,然后等着服务临,参考我自己的这篇博客:
Linux&C实现简单线程池
0 0
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- Android 自定义view及其属性。友情链接底部有动画链接
- 机器学习模型的评价指标和方法
- Xcode8注释快捷键 之前的 (Command + /) 的注释方法不能使用的解决办法
- 关于MyEclipse10 Server窗口显示Could not create the view: An unexpected exception was thrown.
- 关于AngularJs数据递归呈现的实现的几种方式
- 线程
- Microsoft Unity--Interception(AOP)
- 时间一到,开抢月饼(原生JS简单实现定时自动点击事件)
- Struts2_14_Result类型
- 表情中的位置问题
- Android中的何为Context
- ViewPager 与 PagerTabStrip
- 关于Stage3D中的顶点坐标x,y,z与u,v的对应关系
- android中如何去掉标题栏