由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 真正对异步有需求的应该是游戏类服务器
相关主题
多线程,异步,并发冲突,fp和其它如何快速处理大量网上xml文件?
Typescript是不是实际上反 functional programming 的?尼玛 callback 真是反人类
同步编程真郁闷core java里有跟C++ std::async类似的东西吗?
请教一个Node.js的疑惑单线程一般都是历史原因
vert.x 3.1月底发布,一个重要功能fiber简单就是美
看了一下C#的async await又看了一下go 感觉Java毫无压力
这年头async IO成了流行了请java大牛谈谈大并发的解决方案
java8等不及的话,groovy很好啊一个帖子总结goodbug的本事
相关话题的讨论汇总
话题: async话题: 异步话题: thread话题: future话题: multi
进入Programming版参与讨论
1 (共1页)
z****e
发帖数: 54598
1
尤其是卡牌麻将牌棋类这种回合制的游戏server
比较适合用异步,vert.x灰常match这种需求
绝大多数web用啥异步啊,根本木有必要,而且还搞什么单线程
好容易用异步节省下来的资源都给单线程给吃掉了
最后效率还不如古老的servlet
z****e
发帖数: 54598
2
再real time的话,那就只能自己用thread去处理了
framework非常无能为力,所以vert.x这个时候也很灵活
你随时可以转到thread为主的开发上
这个时候要注意控制gc的停顿在20ms以内
一般要pool ojbect,否则触发大gc的话,停顿就会变长
小gc一般都很快了,都是几ms就搞掂了,所以不怕
这个时候对object的重复使用就很关键了
这个时候还是要回到oop上去,一般的fp的immutable太容易触发大gc了
想想每s如果产生几十个immutable object会是怎样一幅光景
mutable object还是非常有必要的
N********n
发帖数: 8363
3
Every multi-threaded heavy traffic site should be on async. The key
is to avoid blocking others from execution while you are waiting.

【在 z****e 的大作中提到】
: 尤其是卡牌麻将牌棋类这种回合制的游戏server
: 比较适合用异步,vert.x灰常match这种需求
: 绝大多数web用啥异步啊,根本木有必要,而且还搞什么单线程
: 好容易用异步节省下来的资源都给单线程给吃掉了
: 最后效率还不如古老的servlet

a9
发帖数: 21638
4
你没搞清为啥用异步吧?

【在 z****e 的大作中提到】
: 尤其是卡牌麻将牌棋类这种回合制的游戏server
: 比较适合用异步,vert.x灰常match这种需求
: 绝大多数web用啥异步啊,根本木有必要,而且还搞什么单线程
: 好容易用异步节省下来的资源都给单线程给吃掉了
: 最后效率还不如古老的servlet

B********r
发帖数: 397
5
不懂就别扯了,这根本不是async 的特点,随便用个thread一样 non-blocking

【在 N********n 的大作中提到】
: Every multi-threaded heavy traffic site should be on async. The key
: is to avoid blocking others from execution while you are waiting.

N********n
发帖数: 8363
6

You are completely a moron. It does not matter if you block or not
if there is only one request to process.
Non-blocking is important only when multiple requests come in (thus
multi-request / multi-threaded situation) and no processing of any
single request blocks others.

【在 B********r 的大作中提到】
: 不懂就别扯了,这根本不是async 的特点,随便用个thread一样 non-blocking
B********r
发帖数: 397
7
艾玛不懂还骂人?
async的实现就是用的Task(c#)/Future(java), 这两个都是在thread基础上,
只不过multi task share same thread,你去看看人家source code再来扯
即使是单个request,non-block IO 也是要的,只不过一样可以用thread pool来代替
zhaoce 说的没错,java servlet用的thread pool一样跑的快,node.js即使用了async
,除了io 能够真正non-blocking其它更慢,还要context switch
游戏的异步就是因为request多而且杂,其中io等待时间长,而维持大量的thread pool
太消耗资源
普通server async 和multi threading 没啥区别

【在 N********n 的大作中提到】
:
: You are completely a moron. It does not matter if you block or not
: if there is only one request to process.
: Non-blocking is important only when multiple requests come in (thus
: multi-request / multi-threaded situation) and no processing of any
: single request blocks others.

N********n
发帖数: 8363
8

It's not just 游戏 that io等待时间长. Any server side code could
have the same problem. Imagine your server code has to call web
services hosted on remote sites. Such calls are io等待时间长 as
well. So async / non-blocking is needed on basically all heavy
traffic sites. You cannot simply say "普通server async没啥区别"

【在 B********r 的大作中提到】
: 艾玛不懂还骂人?
: async的实现就是用的Task(c#)/Future(java), 这两个都是在thread基础上,
: 只不过multi task share same thread,你去看看人家source code再来扯
: 即使是单个request,non-block IO 也是要的,只不过一样可以用thread pool来代替
: zhaoce 说的没错,java servlet用的thread pool一样跑的快,node.js即使用了async
: ,除了io 能够真正non-blocking其它更慢,还要context switch
: 游戏的异步就是因为request多而且杂,其中io等待时间长,而维持大量的thread pool
: 太消耗资源
: 普通server async 和multi threading 没啥区别

z****e
发帖数: 54598
9
你说得没错,thread一样做async,而且这正是java8的改进方向
关键在于脚本无法启动thread,导致thread和process绑定
绝大多数资源都丢给process去浪费了,能够自由控制thread的语言强势多了
能够做出更为强大的framework,比如vert.x
补充一点,你说的future那个稍微有些落伍
lambda出来之后,可以不用future了,可以focus在以lambda为重点的callback上
这样就能实现真正的async了,以前future需要wait,这就有block

async
pool

【在 B********r 的大作中提到】
: 艾玛不懂还骂人?
: async的实现就是用的Task(c#)/Future(java), 这两个都是在thread基础上,
: 只不过multi task share same thread,你去看看人家source code再来扯
: 即使是单个request,non-block IO 也是要的,只不过一样可以用thread pool来代替
: zhaoce 说的没错,java servlet用的thread pool一样跑的快,node.js即使用了async
: ,除了io 能够真正non-blocking其它更慢,还要context switch
: 游戏的异步就是因为request多而且杂,其中io等待时间长,而维持大量的thread pool
: 太消耗资源
: 普通server async 和multi threading 没啥区别

w**z
发帖数: 8232
10
Java8 has CompleteableFuture
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
CompletableFuture.html

【在 z****e 的大作中提到】
: 你说得没错,thread一样做async,而且这正是java8的改进方向
: 关键在于脚本无法启动thread,导致thread和process绑定
: 绝大多数资源都丢给process去浪费了,能够自由控制thread的语言强势多了
: 能够做出更为强大的framework,比如vert.x
: 补充一点,你说的future那个稍微有些落伍
: lambda出来之后,可以不用future了,可以focus在以lambda为重点的callback上
: 这样就能实现真正的async了,以前future需要wait,这就有block
:
: async
: pool

相关主题
看了一下C#的async await如何快速处理大量网上xml文件?
这年头async IO成了流行了尼玛 callback 真是反人类
java8等不及的话,groovy很好啊core java里有跟C++ std::async类似的东西吗?
进入Programming版参与讨论
l*****o
发帖数: 180
11
搞得我以后面试得让人说说异步和多线程的区别了
l**********n
发帖数: 8443
12
java Future, c# Task, javascript Promise都是异步。
z****e
发帖数: 54598
13
future并不是真正的异步
callback的时候会block
当然wwzz说了completefuture那个我不知道
没有用过,不知道运作原理如何
但是最原始的future还是容易block住
而用了lambda之后就可以不用future
直接把callback func扔进去就好了
java8之所以需要弄lambda多少也是为了这个考虑
否则弄个匿名类放进去就有些怪异了
但是lambda层层嵌套还是会造成灾难
所以要用rxjava

【在 l**********n 的大作中提到】
: java Future, c# Task, javascript Promise都是异步。
g*****g
发帖数: 34805
14
Async和Non-blocking 是两个概念,大家可以狗一下省得我解释了。

【在 l**********n 的大作中提到】
: java Future, c# Task, javascript Promise都是异步。
l**********n
发帖数: 8443
15
嗯。

【在 g*****g 的大作中提到】
: Async和Non-blocking 是两个概念,大家可以狗一下省得我解释了。
z****e
发帖数: 54598
16
好吧,我换种说法,用future的话还有提升空间
用lambda的话基本上就榨干净了

【在 g*****g 的大作中提到】
: Async和Non-blocking 是两个概念,大家可以狗一下省得我解释了。
l**********n
发帖数: 8443
17
php也可以异步:
$client->get('http://httpbin.org', ['future' => true])
->then(function ($response) {
echo $response->getStatusCode();
});
N********n
发帖数: 8363
18

C# has had many asynchronous patterns for a while but old patterns
required callbacks leading to goto-like code. Finally async/await
came along to get rid of callbacks so now it's no longer painful
to write & maintain asynchronous code.

【在 l**********n 的大作中提到】
: java Future, c# Task, javascript Promise都是异步。
z****e
发帖数: 54598
19
找了下,总算找到学名了
future那种问题叫做异步里面的状态
是比较糟糕的用法
callback那种叫做回调
subscribe那种叫做通知
后两者本质上是一样的其实
当然通知比较flat,回调容易金字塔
所以最终还是要用rxjava的subscribe
而如果没有lambda的话,就需要额外加多一层封装
那就是匿名类,swing里面经常出现匿名类和final
其原理就是fp的immutable
B********r
发帖数: 397
20
恩,callback比future要好,不过容易callback hell, 最近流行的reactive
programming貌似解决了这个问题,而且不需要long polling?
比如 akka, 不过akka真正牛逼的是multi-thread可以直接变成multi-nodes
相关主题
单线程一般都是历史原因请java大牛谈谈大并发的解决方案
简单就是美一个帖子总结goodbug的本事
又看了一下go 感觉Java毫无压力go几天的一些感受
进入Programming版参与讨论
z****e
发帖数: 54598
21

好像不需要,如果我理解的long polling没有错的话
akka因为都拆成了actor了,所以转换成node很容易
vert.x也是一样的,verticle是最小单位,然后根据verticle转换就好了

【在 B********r 的大作中提到】
: 恩,callback比future要好,不过容易callback hell, 最近流行的reactive
: programming貌似解决了这个问题,而且不需要long polling?
: 比如 akka, 不过akka真正牛逼的是multi-thread可以直接变成multi-nodes

h*******u
发帖数: 15326
22
async sync都是比较花哨的概念,把多线程玩熟了比较重要。万变不离其宗。

async
pool

【在 B********r 的大作中提到】
: 艾玛不懂还骂人?
: async的实现就是用的Task(c#)/Future(java), 这两个都是在thread基础上,
: 只不过multi task share same thread,你去看看人家source code再来扯
: 即使是单个request,non-block IO 也是要的,只不过一样可以用thread pool来代替
: zhaoce 说的没错,java servlet用的thread pool一样跑的快,node.js即使用了async
: ,除了io 能够真正non-blocking其它更慢,还要context switch
: 游戏的异步就是因为request多而且杂,其中io等待时间长,而维持大量的thread pool
: 太消耗资源
: 普通server async 和multi threading 没啥区别

a***n
发帖数: 538
23
Quasar怎么样?
"Quasar is a Java library that provides high-performance lightweight threads
, Go-like channels, Erlang-like actors, and other asynchronous programming
tools."
S***k
发帖数: 370
24
c# task not always async.
If read/write file, http client call, or db access, it can be async.
If just call Task.Run(), it still uses the thread pool and has more switch
overhead. It is more like multiple threads if there is nothing to wait.

【在 l**********n 的大作中提到】
: java Future, c# Task, javascript Promise都是异步。
1 (共1页)
进入Programming版参与讨论
相关主题
一个帖子总结goodbug的本事vert.x 3.1月底发布,一个重要功能fiber
go几天的一些感受看了一下C#的async await
rxjava看起来还不错这年头async IO成了流行了
大牛们讨论一下异步编程吧java8等不及的话,groovy很好啊
多线程,异步,并发冲突,fp和其它如何快速处理大量网上xml文件?
Typescript是不是实际上反 functional programming 的?尼玛 callback 真是反人类
同步编程真郁闷core java里有跟C++ std::async类似的东西吗?
请教一个Node.js的疑惑单线程一般都是历史原因
相关话题的讨论汇总
话题: async话题: 异步话题: thread话题: future话题: multi