+
 新版
2016-04-25 15:46

引用来自“wonder.wj”的评论

说的是物理线程,这个才能利用多核cpu提升并发处理能力
启动物理线程数量超过cpu核心数之后对并发能力是有负面影响的,一般物理线程的数量最多设定在cpu核心数。所以你说的并不是刻意启动任意数量的线程的吧。node-lua启动最大物理线程数量是根据cpu核心数来定的,运行期间会根据负载会自动调整物理线程数量。node-lua当中我说的单独的lvm环境(独立服务)是可以启动任意数量的。你研究过go么?
2016-04-23 17:37
说的是物理线程,这个才能利用多核cpu提升并发处理能力
2016-04-22 13:15

引用来自“wonder.wj”的评论

luvit的模式有两种:
1.work模式,执行是在luvit默认启动的work线程中运行,一个work线程对应一个lua虚拟机,代码会重新加载,会加锁的,而且线程数量是有限的,对于同一段work代码,会在不同虚拟机中执行。
2.标准thread的模式,启动一个线程,每个线程一个虚拟机,线程的数量是没有限制的,看你启动多少,每个线程都带消息循环,和主线程没有区别。

所以,要利用多核cpu,只需要启动多个线程即可,再外加自己写一个线程间通讯(最简单的是进程内生成一个全局队列,对所有虚拟机开放),就可以合理分配了。

luvit的优势是在比较成熟的libuv基础之上做封装,性能等各方面都是有保证的,对于简单的应用,单线程异步模式已经足够,而且编写逻辑简单方便。对于并发有要求的,可以执行启动多个线程来执行。
您说的线程是物理线程 还是封装的线程对象 还是lua的coroutine呢?
2016-04-22 10:04
luvit的模式有两种:
1.work模式,执行是在luvit默认启动的work线程中运行,一个work线程对应一个lua虚拟机,代码会重新加载,会加锁的,而且线程数量是有限的,对于同一段work代码,会在不同虚拟机中执行。
2.标准thread的模式,启动一个线程,每个线程一个虚拟机,线程的数量是没有限制的,看你启动多少,每个线程都带消息循环,和主线程没有区别。

所以,要利用多核cpu,只需要启动多个线程即可,再外加自己写一个线程间通讯(最简单的是进程内生成一个全局队列,对所有虚拟机开放),就可以合理分配了。

luvit的优势是在比较成熟的libuv基础之上做封装,性能等各方面都是有保证的,对于简单的应用,单线程异步模式已经足够,而且编写逻辑简单方便。对于并发有要求的,可以执行启动多个线程来执行。
2016-04-21 22:12
很期待,有成功案例吗
2016-04-21 21:47

引用来自“wonder.wj”的评论

luvit可以启动多线程的,每个线程一个虚拟机,只需要增加一个线程间通讯的模块能很好的利用多核cpu。而且它基础的异步模式+lua的协程,简直就是绝配,不需要想node.js那样写那么多回调,只需要在协程中按同步的写法就OK了。

不知道你通讯部分怎么处理的,看sample貌似是同步的?

引用来自“socoding”的评论

在每个lua虚拟机(独立服务)里面,是同时支持同步也异步调用的,独立服务的优势是功能的隔离性,防止某个独立的功能因为共享同一个lua虚拟机带来的困扰(虽然可以在一个lua虚拟机启动多个coroutine,但这些coroutine是共享全局变量和upvalue等的)。另外,对于node-lua的独立服务,也可以自由的创建自己的coroutine,对同步和异步的调用也不会产生影响。

引用来自“wonder.wj”的评论

luvit有集中模式,如果是work模式的话确实是只能使用固定数量的线程,但是它提供自行启动线程的能力,可以根据需要启动你想要的线程,然后进行线程间通讯即可。
可以参看luvit中deps/thread.lua脚本,start是启动线程,work是在固定数量线程中调用脚本。二者是有区别的。
你用过go的话 会发现它可以启动n多个线程对象,对于node-lua来说,就是n多个lvm(独立服务)
2016-04-21 21:44

引用来自“wonder.wj”的评论

luvit可以启动多线程的,每个线程一个虚拟机,只需要增加一个线程间通讯的模块能很好的利用多核cpu。而且它基础的异步模式+lua的协程,简直就是绝配,不需要想node.js那样写那么多回调,只需要在协程中按同步的写法就OK了。

不知道你通讯部分怎么处理的,看sample貌似是同步的?

引用来自“socoding”的评论

在每个lua虚拟机(独立服务)里面,是同时支持同步也异步调用的,独立服务的优势是功能的隔离性,防止某个独立的功能因为共享同一个lua虚拟机带来的困扰(虽然可以在一个lua虚拟机启动多个coroutine,但这些coroutine是共享全局变量和upvalue等的)。另外,对于node-lua的独立服务,也可以自由的创建自己的coroutine,对同步和异步的调用也不会产生影响。

引用来自“wonder.wj”的评论

luvit有集中模式,如果是work模式的话确实是只能使用固定数量的线程,但是它提供自行启动线程的能力,可以根据需要启动你想要的线程,然后进行线程间通讯即可。
可以参看luvit中deps/thread.lua脚本,start是启动线程,work是在固定数量线程中调用脚本。二者是有区别的。
一个线程下启动几个lvm呢?
2016-04-21 21:35

引用来自“wonder.wj”的评论

luvit可以启动多线程的,每个线程一个虚拟机,只需要增加一个线程间通讯的模块能很好的利用多核cpu。而且它基础的异步模式+lua的协程,简直就是绝配,不需要想node.js那样写那么多回调,只需要在协程中按同步的写法就OK了。

不知道你通讯部分怎么处理的,看sample貌似是同步的?

引用来自“socoding”的评论

在每个lua虚拟机(独立服务)里面,是同时支持同步也异步调用的,独立服务的优势是功能的隔离性,防止某个独立的功能因为共享同一个lua虚拟机带来的困扰(虽然可以在一个lua虚拟机启动多个coroutine,但这些coroutine是共享全局变量和upvalue等的)。另外,对于node-lua的独立服务,也可以自由的创建自己的coroutine,对同步和异步的调用也不会产生影响。
luvit有集中模式,如果是work模式的话确实是只能使用固定数量的线程,但是它提供自行启动线程的能力,可以根据需要启动你想要的线程,然后进行线程间通讯即可。
可以参看luvit中deps/thread.lua脚本,start是启动线程,work是在固定数量线程中调用脚本。二者是有区别的。
2016-04-21 19:42

引用来自“wonder.wj”的评论

luvit可以启动多线程的,每个线程一个虚拟机,只需要增加一个线程间通讯的模块能很好的利用多核cpu。而且它基础的异步模式+lua的协程,简直就是绝配,不需要想node.js那样写那么多回调,只需要在协程中按同步的写法就OK了。

不知道你通讯部分怎么处理的,看sample貌似是同步的?
在每个lua虚拟机(独立服务)里面,是同时支持同步也异步调用的,独立服务的优势是功能的隔离性,防止某个独立的功能因为共享同一个lua虚拟机带来的困扰(虽然可以在一个lua虚拟机启动多个coroutine,但这些coroutine是共享全局变量和upvalue等的)。另外,对于node-lua的独立服务,也可以自由的创建自己的coroutine,对同步和异步的调用也不会产生影响。
2016-04-21 18:04
luvit可以启动多线程的,每个线程一个虚拟机,只需要增加一个线程间通讯的模块能很好的利用多核cpu。而且它基础的异步模式+lua的协程,简直就是绝配,不需要想node.js那样写那么多回调,只需要在协程中按同步的写法就OK了。

不知道你通讯部分怎么处理的,看sample貌似是同步的?
2016-04-21 16:12

引用来自“qiu-fl”的评论

test
0
2016-04-21 16:10

引用来自“Windoze”的评论

这东西和Luvit有什么区别?
node-lua是以多线程方式运行的,支持构建海量的独立的lua服务(不同服务可以并行运行)并支持不同服务之间的rpc调用(同时支持同步和异步模式)。node-lua实际上采用了任务多路复用的设计,可以效利用多核优势,就我所知luavit是仿nodejs已单线程方式运行的。
2016-04-21 15:58
这东西和Luvit有什么区别?
2016-04-21 15:48
test
回复 @
{{emojiItem.symbol}}
返回顶部
顶部