lua中"协程"和erlang"进程",go等脚本 与 java 中“多线程”的对比理解
来源:互联网 发布:印度军工很差知乎 编辑:程序博客网 时间:2024/06/05 11:41
我
Lua,Erlang,go这种只有协程或者所谓的轻量级"进程"的语言,虽然它们让程序执行变得可以控制,假如:他们即使一下子开了1000个线程,实际上一次只能运行1个线程,本身并没有利用多核的优势。 假如:让这几种语言和具有真正线程概念能利用多核cpu的java对比下。 如果一下子都处理1000个任务,因为前几个语言没有利用多核cpu,那处理速度会不会比java慢很多呢? 这个怎么理解。找了很多资料,他们只介绍了:lua的协程或者Erlang的进程,只是说让程序变得可控这种优势,但是却没介绍:如果这种不是真正的“线程”的语言来处理任务时,是否会处理的缓慢等问题。
而且:云风的skynet这个服务器端框架,利用actor模型,里面主要就是用的协程,实际开发中,并没有我说的那个问题。所以我想知道:我哪里理解错了。
有种BUG叫设计如此 12:55:05
你的疑问是什么啊?
有种BUG叫设计如此 12:57:10
不能利用多和资源是吧
有种BUG叫设计如此 12:58:08
最简单的写个程序试试就知道了,协程里面写死循环看,能不能把cpu跑到100%
Lukey 13:01:41
我就在用go
Lukey 13:01:45
确实不错
王哲小号 13:02:20
lua的“协程”并不是线程,说到底,这1000个协程一定是顺序执行的,严格来说,它是在某个线程环境下执行的,除掉本身的消耗,它的消耗另外一部分在管理这些协程以及代码跳转,至于是否能够利用到多核,取决于上层的高级语言对于线程的性能能否较好的分摊到多核上去。
王哲小号 13:03:21
golang在设计之初就是针对多核的,所以上层语言的设定就针对多核下的环境,golang中很多东西都针对多核进行了特别的优化。
海浪 13:07:03
我想问的是。。。你纠结携程是不是利用多核,是要干啥
王哲小号 13:07:42
这个是在语言设计层面需要考虑的事情
有种BUG叫设计如此 13:08:06
逻辑上也需要考虑 的
王哲小号 13:08:07
至今还没有看到过哪种语言还需要你手动考虑到多核的
王哲小号 13:08:24
比如?
有种BUG叫设计如此 13:08:56
至少要知道才知道什么时候用进程,什么时候用线程,什么时候用协程啊
海浪 13:09:35
你连这都不知道。。。。。
王哲小号 13:09:49
这个我觉得更多的程序性能上面的事情
王哲小号 13:09:57
而不是考虑多核
王哲小号 13:10:25
一个问题不只有一种解,我们要的是最优解
有种BUG叫设计如此 13:10:45
如果你不知道一个语言的协程是不是可以分派到多核处理,那就是连那些也不知道呗
王哲小号 13:10:48
进程、线程这种解是不是最优,我觉得具有一定的讨论余地
有种BUG叫设计如此 13:18:28
一个lua vm对应一个os 线程
有种BUG叫设计如此 13:18:49
skynet 应该是用的多个lua vm利用的多核资源
北京|欠费 13:32:23
是否使用多核 编译器上面考虑的吧 你在语言层面 考虑没有意义。
有种BUG叫设计如此 13:41:23
我觉得不管是编辑器语言层面,还是框架层面,还是逻辑层面,都需要考虑,才能写出好程序
0 0
- lua中"协程"和erlang"进程",go等脚本 与 java 中“多线程”的对比理解
- java中对进程,多线程入门理解
- Python中单线程、多线程与多进程的效率对比实验
- Python中单线程、多线程与多进程的效率对比实验
- Python中单线程、多线程和多进程的效率对比实验
- Python中单线程、多线程和多进程的效率对比实验
- Python中单线程、多线程和多进程的效率对比实验
- Java多线程中锁的理解与使用
- Java中线程和进程的一些概念的理解
- GO中chan的理解
- 多线程与进程的理解
- 多线程与多进程的对比
- [Erlang 学习笔记] 对 erlang 中 Application 的理解
- Java中判等陷阱的理解
- Android中线程与进程的理解
- Android中线程与进程的理解
- Android中线程与进程的理解
- 关于Java 中回调函数的一些理解及与JavaScript的对比
- 缓存更新机制思考
- 互联网公司面试问题总结之网络和操作系统
- ios原生php端推送信息
- FFMPEG1.2 音频解码的过程
- java对象创建过程及初始化顺序
- lua中"协程"和erlang"进程",go等脚本 与 java 中“多线程”的对比理解
- 用Netty开发中间件:高并发性能优化
- Activity最强生命周期
- 经典程序(一)
- iOS开发之app之间的跳转以及跳转到appstore
- 实战Memcached缓存系统(4)Memcached的CAS协议
- Linux 命令下面的/dev/null 目录
- ios10下的通知更新
- Zookeeper配置