由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++ 有没有像go routine/channel 一样的库/框架?
相关主题
如何GDB调试因pthread_cond_wait()阻塞的线程? (转载)怎么 kill 一个 thread 啊
我是一个线程 (转载)怎么知道一个线程结束没有?
C10M除了socket以外,还牵涉其他方面的技巧[合集] 为什么多个线程生成的随机数是一样的?
Windows Thread API请教一个c语言实现多线程的问题
多线程的程序设计有什么好书推荐? (转载)在main()里面创建了几个线程,如何等待所有线程都结束?
coroutine comes to Java - Project LoomPthread一个牵涉两个线程同步,每轮先串行后并行的问题
再次请教关于AIX中线程以及优先级的问题关于线程读写全局变量的问题
重复利用threads的问题Python Concurrency 主流是用啥
相关话题的讨论汇总
话题: c++话题: 线程话题: thread话题: java话题: go
进入Programming版参与讨论
1 (共1页)
l*********s
发帖数: 5409
1
rt
d****n
发帖数: 1637
l*********s
发帖数: 5409
3
谢谢大哥指点!

【在 d****n 的大作中提到】
: c++
: http://www.webr2.com/c-libraries-that-implement-go-goroutines-o
: C
: https://github.com/stefantalpalaru/golib (but I dont see it is ready for
: production, be caution bird)
: and why
: https://groups.google.com/forum/#!topic/golang-nuts/HroRSomDLlo

w***g
发帖数: 5958
4
用plan9的库,里面有channel,但是是C的。
C++连个通用的producer/consumer库都没有。
boost里和网上能找到用户态的线程库,但一般都不支持multi-core,
对操作系统的阻塞也无法感知(go因为包了一层,所以能感知阻塞操作),
open source的用户态light weighted线程,还能支持multi-core的,还要
支持job stealing啥的,这种牛B的库没有。
所以虽然go是C/C++写的,就线程高并发来说C/C++不如go。
但是,线程高并发只是一种写法。C/C++搞个几百个线程还是没问题的。
再要提高,就只能用event了。但是话说C/C++也没有好的event库能
支持multi-core, job stealing啥的也没有。event写东西又难debug。
总之C/C++要写超高吞吐量的,一般只能是牛B程序员手写。
就个人来说,我并不觉得C++需要go那种程度的线程高并发。
考虑到I/O阻塞啥的,每个core上放几十个线程也就够了,加起来也就是
几百个线程。线程数再多,overhead比例就升高了,反而不助于提高
吞吐量。如若不信,可以看下web server benchmark,吞吐量最牛B
的还是C/C++。

【在 l*********s 的大作中提到】
: rt
w***g
发帖数: 5958
5
那个golib有点意思。不知道操统的阻塞操作怎么处理。
就go而言,runtime应该能知道哪些操作会阻塞,然后可以自动切换goroutine。
但是如果用C/C++,直接调用操统接口,比如select,
golib怎么知道?

【在 d****n 的大作中提到】
: c++
: http://www.webr2.com/c-libraries-that-implement-go-goroutines-o
: C
: https://github.com/stefantalpalaru/golib (but I dont see it is ready for
: production, be caution bird)
: and why
: https://groups.google.com/forum/#!topic/golang-nuts/HroRSomDLlo

s*******m
发帖数: 58
p***o
发帖数: 1252
7
Windows的fiber也出来10多年了,有人用吗?

【在 s*******m 的大作中提到】
: 关于多线程
: windows可以看
: https://msdn.microsoft.com/en-us/library/dd460717(v=vs.110).aspx
: 跨平台可以看
: https://www.threadingbuildingblocks.org/

l*********s
发帖数: 5409
8
desktop不需要,windows服务器又没人鸟。

【在 p***o 的大作中提到】
: Windows的fiber也出来10多年了,有人用吗?
d****n
发帖数: 1637
9
我也不知到, 得花功夫去读人家code啊

【在 w***g 的大作中提到】
: 那个golib有点意思。不知道操统的阻塞操作怎么处理。
: 就go而言,runtime应该能知道哪些操作会阻塞,然后可以自动切换goroutine。
: 但是如果用C/C++,直接调用操统接口,比如select,
: golib怎么知道?

l*********s
发帖数: 5409
10
惨绝人寰!

【在 w***g 的大作中提到】
: 用plan9的库,里面有channel,但是是C的。
: C++连个通用的producer/consumer库都没有。
: boost里和网上能找到用户态的线程库,但一般都不支持multi-core,
: 对操作系统的阻塞也无法感知(go因为包了一层,所以能感知阻塞操作),
: open source的用户态light weighted线程,还能支持multi-core的,还要
: 支持job stealing啥的,这种牛B的库没有。
: 所以虽然go是C/C++写的,就线程高并发来说C/C++不如go。
: 但是,线程高并发只是一种写法。C/C++搞个几百个线程还是没问题的。
: 再要提高,就只能用event了。但是话说C/C++也没有好的event库能
: 支持multi-core, job stealing啥的也没有。event写东西又难debug。

相关主题
coroutine comes to Java - Project Loom怎么 kill 一个 thread 啊
再次请教关于AIX中线程以及优先级的问题怎么知道一个线程结束没有?
重复利用threads的问题[合集] 为什么多个线程生成的随机数是一样的?
进入Programming版参与讨论
p***o
发帖数: 1252
11
老老实实用TBB把。

【在 l*********s 的大作中提到】
: 惨绝人寰!
p*u
发帖数: 2454
12

check out HPX and Qt

【在 l*********s 的大作中提到】
: 惨绝人寰!
l*********s
发帖数: 5409
13
Qt肯定没有。

【在 p*u 的大作中提到】
:
: check out HPX and Qt

w***g
发帖数: 5958
14
我猜是所有的I/O都不能用系统调用,而是通过libgo走,
然后libgo给在中间掐断。

【在 d****n 的大作中提到】
: 我也不知到, 得花功夫去读人家code啊
T********i
发帖数: 2416
15
C/C++做I/O最优化的方案是每个CPU socket一个网卡(每个Socket都有独立的IOH)。
同时每个socket用一个core单线程处理I/O。
任何违背这个原则的方案都不是最优的,也就是说你增加网卡数量或者线程数量说明你
不合格。
我估计我的建议用处不大。我只能帮到这里了。
d****i
发帖数: 4809
16
不会吧,除了标准的多线程pthread以外,不是有C的库libevent, libev, libuv这样的
event库吗?都是user space的lib,然后Node, Java的Future, Python的Twisted, PHP
的ReactPHP等都是基于这几个lib的吧。Go的channel的实现没有研究过,用的也是
pthread上面包了一层吗?还是libevent上面包了一层?

【在 w***g 的大作中提到】
: 用plan9的库,里面有channel,但是是C的。
: C++连个通用的producer/consumer库都没有。
: boost里和网上能找到用户态的线程库,但一般都不支持multi-core,
: 对操作系统的阻塞也无法感知(go因为包了一层,所以能感知阻塞操作),
: open source的用户态light weighted线程,还能支持multi-core的,还要
: 支持job stealing啥的,这种牛B的库没有。
: 所以虽然go是C/C++写的,就线程高并发来说C/C++不如go。
: 但是,线程高并发只是一种写法。C/C++搞个几百个线程还是没问题的。
: 再要提高,就只能用event了。但是话说C/C++也没有好的event库能
: 支持multi-core, job stealing啥的也没有。event写东西又难debug。

d****n
发帖数: 1637
17
golang 根本没有libxxx

PHP

【在 d****i 的大作中提到】
: 不会吧,除了标准的多线程pthread以外,不是有C的库libevent, libev, libuv这样的
: event库吗?都是user space的lib,然后Node, Java的Future, Python的Twisted, PHP
: 的ReactPHP等都是基于这几个lib的吧。Go的channel的实现没有研究过,用的也是
: pthread上面包了一层吗?还是libevent上面包了一层?

l*********s
发帖数: 5409
18
知道原则就好很多了,谢谢

【在 T********i 的大作中提到】
: C/C++做I/O最优化的方案是每个CPU socket一个网卡(每个Socket都有独立的IOH)。
: 同时每个socket用一个core单线程处理I/O。
: 任何违背这个原则的方案都不是最优的,也就是说你增加网卡数量或者线程数量说明你
: 不合格。
: 我估计我的建议用处不大。我只能帮到这里了。

w***g
发帖数: 5958
19
pthread是包在OS线程外的。light-weighted thread需要用到用户态线程。
微软的fiber是用户态的,但是因为是windows世界的,不怎么招人待见。
在多核上做用户态线程是一件非常非常恶心的事情,GO最主要的贡献其实
就是把这件事做成了。主要的恶心之处就是怎么处理job stealing:一个
操统线程上面的任务都跑完了,就需要去别的操统线程那儿把活弄过来。
这就涉及到各种同步,各种locking。Locking多了,性能就下来了。
这种事情以前应该不少公司内部都有人做过,能做这个的人一般也都
屌得不得了。其实稍微对比一下就能知道multi-core有多难做:
node.js不支持multi-core,python折腾这么多年也还是个残疾。
如果你想更多地了解一下,可以从man makecontext
看起。每个用户态线程其实是一个context。然后底下每个操统线程负责
管一堆context。context切换主要靠cooperative scheduling,而不是操统
用的preemptive scheduling。也就是说一个context运行到某一步自己主动
把执行权让出来。Unix世界的一般没见过cooperative scheduling.
Windows 3.x是cooperative scheduling,所以线程跑一会就得调用yield
让出执行权。因为不可能要求程序员写几行程序就插入一个yield,所以
其实Windows很多UI和I/O的API都内嵌了yield。那些差的程序员不知道
这回事,有时候进入一个纯计算的循环没有在中间插入yield,就会导致
系统挂起。Unix世界从一开始就是pre-emptive的,操统API没有内嵌yield
这回事。手写程序隔几行插入yield也不可行。这就是unix世界的C/C++做
用户态线程几乎不肯能的原因。这也是为啥rob pike非要搞一个新的语言的
原因:在操统API外包一层,并且嵌入yield(还有就是GC)。GO在语言层面
上其实没有任何创新,甚至比好多现有的语言都要低级。如果从出发点来
看,GO的目的其实已经达到了。相比而言,Windows有在API
里面做yield的传统,这也是为什么这么容易搞出来fiber的原因。
C++11的thread API里有个莫名其妙的this_thread::yield,其实就是为了
给non-preemptive的runtime留下余地。理论上说,如果禁止调用操统API,
全都用C++的I/O库,C++是有可能做出来用户态线程的runtime的。有的嵌入
式系统本就没有preemptive scheduling, yield就成了必须得了。

PHP

【在 d****i 的大作中提到】
: 不会吧,除了标准的多线程pthread以外,不是有C的库libevent, libev, libuv这样的
: event库吗?都是user space的lib,然后Node, Java的Future, Python的Twisted, PHP
: 的ReactPHP等都是基于这几个lib的吧。Go的channel的实现没有研究过,用的也是
: pthread上面包了一层吗?还是libevent上面包了一层?

d****i
发帖数: 4809
20
大牛高,赞详解。我做了那么多年,不管是当年的Solaris, 还是现在的Linux,还是那
些众多的RTOS, 清一色的preemptive。pthread确切的说应该是user space created的
thread,但是under the hood由kernel thread来support的吧,

【在 w***g 的大作中提到】
: pthread是包在OS线程外的。light-weighted thread需要用到用户态线程。
: 微软的fiber是用户态的,但是因为是windows世界的,不怎么招人待见。
: 在多核上做用户态线程是一件非常非常恶心的事情,GO最主要的贡献其实
: 就是把这件事做成了。主要的恶心之处就是怎么处理job stealing:一个
: 操统线程上面的任务都跑完了,就需要去别的操统线程那儿把活弄过来。
: 这就涉及到各种同步,各种locking。Locking多了,性能就下来了。
: 这种事情以前应该不少公司内部都有人做过,能做这个的人一般也都
: 屌得不得了。其实稍微对比一下就能知道multi-core有多难做:
: node.js不支持multi-core,python折腾这么多年也还是个残疾。
: 如果你想更多地了解一下,可以从man makecontext

相关主题
请教一个c语言实现多线程的问题关于线程读写全局变量的问题
在main()里面创建了几个线程,如何等待所有线程都结束?Python Concurrency 主流是用啥
Pthread一个牵涉两个线程同步,每轮先串行后并行的问题请教python高手异步编程的问题
进入Programming版参与讨论
d****i
发帖数: 4809
21
发现一片很好的文章,解释了thread, coroutine, fiber之间的联系和区别,结论是
Use thread for sure if you can, 哈哈。
http://stackoverflow.com/questions/16765736/why-doesnt-linux-us
Coroutines, fibers and their ilk are thread-like execution contexts managed
by programming language runtimes or libraries, rather than by the operating
system, which regards them to be in one thread. They are of limited use;
nobody in their right mind uses such hacks when real threads are available.

【在 w***g 的大作中提到】
: pthread是包在OS线程外的。light-weighted thread需要用到用户态线程。
: 微软的fiber是用户态的,但是因为是windows世界的,不怎么招人待见。
: 在多核上做用户态线程是一件非常非常恶心的事情,GO最主要的贡献其实
: 就是把这件事做成了。主要的恶心之处就是怎么处理job stealing:一个
: 操统线程上面的任务都跑完了,就需要去别的操统线程那儿把活弄过来。
: 这就涉及到各种同步,各种locking。Locking多了,性能就下来了。
: 这种事情以前应该不少公司内部都有人做过,能做这个的人一般也都
: 屌得不得了。其实稍微对比一下就能知道multi-core有多难做:
: node.js不支持multi-core,python折腾这么多年也还是个残疾。
: 如果你想更多地了解一下,可以从man makecontext

d****i
发帖数: 4809
22
所以说rob pike搞了半天coroutine, 都是闲的蛋疼扯的,最后性能还是比不过thread
。所以plan 9也就作为贝尔实验室的试验而早就进了坟墓,不像同是出自贝尔实验室大
师的Unix得以千秋万代伟光正。

managed
operating
.

【在 d****i 的大作中提到】
: 发现一片很好的文章,解释了thread, coroutine, fiber之间的联系和区别,结论是
: Use thread for sure if you can, 哈哈。
: http://stackoverflow.com/questions/16765736/why-doesnt-linux-us
: Coroutines, fibers and their ilk are thread-like execution contexts managed
: by programming language runtimes or libraries, rather than by the operating
: system, which regards them to be in one thread. They are of limited use;
: nobody in their right mind uses such hacks when real threads are available.

w***g
发帖数: 5958
23
coroutine主要是有语法上的好处,跟性能没关系。比如下面这个语法就很漂亮。
def fab(max):
n, a, b = 0, 0, 1
while n < max:
yield b # 不是线程调度那个yield
a, b = b, a + b
n = n + 1
for n in fab(5):
print n
C/C++要实现coroutine也是用类似context的方法,以至于有一些人就直接把
coroutine和context等同了,光从性能上来考虑问题,忘了语法上的好处。
再说C/C++没有语法糖,就是用coroutine也写不出漂亮的程序。

managed
operating
.

【在 d****i 的大作中提到】
: 发现一片很好的文章,解释了thread, coroutine, fiber之间的联系和区别,结论是
: Use thread for sure if you can, 哈哈。
: http://stackoverflow.com/questions/16765736/why-doesnt-linux-us
: Coroutines, fibers and their ilk are thread-like execution contexts managed
: by programming language runtimes or libraries, rather than by the operating
: system, which regards them to be in one thread. They are of limited use;
: nobody in their right mind uses such hacks when real threads are available.

l*********s
发帖数: 5409
24
佩服的5体投地!

【在 w***g 的大作中提到】
: pthread是包在OS线程外的。light-weighted thread需要用到用户态线程。
: 微软的fiber是用户态的,但是因为是windows世界的,不怎么招人待见。
: 在多核上做用户态线程是一件非常非常恶心的事情,GO最主要的贡献其实
: 就是把这件事做成了。主要的恶心之处就是怎么处理job stealing:一个
: 操统线程上面的任务都跑完了,就需要去别的操统线程那儿把活弄过来。
: 这就涉及到各种同步,各种locking。Locking多了,性能就下来了。
: 这种事情以前应该不少公司内部都有人做过,能做这个的人一般也都
: 屌得不得了。其实稍微对比一下就能知道multi-core有多难做:
: node.js不支持multi-core,python折腾这么多年也还是个残疾。
: 如果你想更多地了解一下,可以从man makecontext

d****i
发帖数: 4809
25
不要虚假的fancy华而不实和语法糖,要实用要简单要易懂要性能,这是Unix的宗旨和
哲学。

【在 w***g 的大作中提到】
: coroutine主要是有语法上的好处,跟性能没关系。比如下面这个语法就很漂亮。
: def fab(max):
: n, a, b = 0, 0, 1
: while n < max:
: yield b # 不是线程调度那个yield
: a, b = b, a + b
: n = n + 1
: for n in fab(5):
: print n
: C/C++要实现coroutine也是用类似context的方法,以至于有一些人就直接把

l*********s
发帖数: 5409
26
佩服的5体投地!

【在 w***g 的大作中提到】
: pthread是包在OS线程外的。light-weighted thread需要用到用户态线程。
: 微软的fiber是用户态的,但是因为是windows世界的,不怎么招人待见。
: 在多核上做用户态线程是一件非常非常恶心的事情,GO最主要的贡献其实
: 就是把这件事做成了。主要的恶心之处就是怎么处理job stealing:一个
: 操统线程上面的任务都跑完了,就需要去别的操统线程那儿把活弄过来。
: 这就涉及到各种同步,各种locking。Locking多了,性能就下来了。
: 这种事情以前应该不少公司内部都有人做过,能做这个的人一般也都
: 屌得不得了。其实稍微对比一下就能知道multi-core有多难做:
: node.js不支持multi-core,python折腾这么多年也还是个残疾。
: 如果你想更多地了解一下,可以从man makecontext

l*********s
发帖数: 5409
27
re

【在 w***g 的大作中提到】
: coroutine主要是有语法上的好处,跟性能没关系。比如下面这个语法就很漂亮。
: def fab(max):
: n, a, b = 0, 0, 1
: while n < max:
: yield b # 不是线程调度那个yield
: a, b = b, a + b
: n = n + 1
: for n in fab(5):
: print n
: C/C++要实现coroutine也是用类似context的方法,以至于有一些人就直接把

l*********s
发帖数: 5409
28
扯淡,你写java的时候怎么不说。

【在 d****i 的大作中提到】
: 不要虚假的fancy华而不实和语法糖,要实用要简单要易懂要性能,这是Unix的宗旨和
: 哲学。

w***g
发帖数: 5958
29
我有段时间老搞不明白plan 9有啥牛B的。后来才发现plan 9提出的不少新概念已经被
Linux借鉴了。Plan 9是80年代的东西,Linux是90年代的东西。我知道plan 9是2005
年,自然是见怪不怪了。话说我当年在的实验室有个plan9的拥趸,说起来就是
"pthread is broken"。当时我们做的project底层是一套不知道从哪儿搞来的
用户态plan9的库。
就像现在读阿西莫夫的小说,自然读不出任何新鲜的东西。

thread

【在 d****i 的大作中提到】
: 所以说rob pike搞了半天coroutine, 都是闲的蛋疼扯的,最后性能还是比不过thread
: 。所以plan 9也就作为贝尔实验室的试验而早就进了坟墓,不像同是出自贝尔实验室大
: 师的Unix得以千秋万代伟光正。
:
: managed
: operating
: .

z****e
发帖数: 54598
30
所谓的fiber其实就是一个suspendable thread
就是加了一层
加了这一层好处就是可以提升效率,同时不用搞各种恶心的cb
但是随着这一层技术的成熟,这些东西对于用户将会是透明的
java已经抄了这些功能,基本上简化到了一个annotation
@Suspendable之后就ok啦
不过现在还需要用javaagent,其实差不了太多
另外并发用immutable足够了,用msg

managed
operating
.

【在 d****i 的大作中提到】
: 发现一片很好的文章,解释了thread, coroutine, fiber之间的联系和区别,结论是
: Use thread for sure if you can, 哈哈。
: http://stackoverflow.com/questions/16765736/why-doesnt-linux-us
: Coroutines, fibers and their ilk are thread-like execution contexts managed
: by programming language runtimes or libraries, rather than by the operating
: system, which regards them to be in one thread. They are of limited use;
: nobody in their right mind uses such hacks when real threads are available.

相关主题
MFC里如何判断一个线程处在Wait的状态?我是一个线程 (转载)
实时应用在IOS, Android上那一个容易实现C10M除了socket以外,还牵涉其他方面的技巧
如何GDB调试因pthread_cond_wait()阻塞的线程? (转载)Windows Thread API
进入Programming版参与讨论
z****e
发帖数: 54598
31

当线程和内存都被很好滴管理起来之后
你们写c的还有市场吗?

【在 w***g 的大作中提到】
: 我有段时间老搞不明白plan 9有啥牛B的。后来才发现plan 9提出的不少新概念已经被
: Linux借鉴了。Plan 9是80年代的东西,Linux是90年代的东西。我知道plan 9是2005
: 年,自然是见怪不怪了。话说我当年在的实验室有个plan9的拥趸,说起来就是
: "pthread is broken"。当时我们做的project底层是一套不知道从哪儿搞来的
: 用户态plan9的库。
: 就像现在读阿西莫夫的小说,自然读不出任何新鲜的东西。
:
: thread

p***o
发帖数: 1252
32
除非这些code就你一个人写一个人维护, 要不然后面接手的人要骂娘。

【在 l*********s 的大作中提到】
: 知道原则就好很多了,谢谢
z****e
发帖数: 54598
33

vert.x已经把各种傻瓜化做到了极致
线程托管,内存托管,硬盘托管,跨平台
能搞的各种脏活累活都被它搞了
vert.x之后,关注底层的都是傻逼
你只需要关心上层逻辑就可以了
底层会越来越抽象,最后简化成几个数字而已
随着这些技术的成熟
社会对于c这种东西在server side的需求会大幅降低
而对于java的需求会大幅升高,因为vert.x打好了一个平台
然后java之后,其他脚本怎么搞,那就看domain了
物理层的封装接近完成
现在都有很成熟的方法来封装物理层面的部件了

【在 l*********s 的大作中提到】
: 扯淡,你写java的时候怎么不说。
z****e
发帖数: 54598
34

vert.x把这些概念全部屏蔽了
现在连dont block me这一条黄金准则都被vertx sync给干掉了
以后你写商业逻辑,只需要估算一下
如果执行时间久的话,放一个annotation
@Suspendable上去,thread就会自动切换component/verticle
不需要操心了,如果不知道到底执行多久
对于所有的verticle里面的方法,全部放@Suspendable

【在 d****i 的大作中提到】
: 不要虚假的fancy华而不实和语法糖,要实用要简单要易懂要性能,这是Unix的宗旨和
: 哲学。

p***o
发帖数: 1252
35
cooperative multitasking这类和asynchronous io是互补的,这么多年的历史
看来只要大家被后者的callback hell恶心的不行了就会来鼓捣前者。

【在 z****e 的大作中提到】
: 所谓的fiber其实就是一个suspendable thread
: 就是加了一层
: 加了这一层好处就是可以提升效率,同时不用搞各种恶心的cb
: 但是随着这一层技术的成熟,这些东西对于用户将会是透明的
: java已经抄了这些功能,基本上简化到了一个annotation
: @Suspendable之后就ok啦
: 不过现在还需要用javaagent,其实差不了太多
: 另外并发用immutable足够了,用msg
:
: managed

z****e
发帖数: 54598
36

这个就跟gc什么一样
托管了就好,就看有没有轮子了
如果手动去搞,就比较麻烦
有托管的,就会有很多人去用
开自动档舒服啊,适合我这样的懒人

【在 p***o 的大作中提到】
: cooperative multitasking这类和asynchronous io是互补的,这么多年的历史
: 看来只要大家被后者的callback hell恶心的不行了就会来鼓捣前者。

p***o
发帖数: 1252
37
这你可真不用担心,像vert.x这么简单易用的轮子概念清楚的话上手快得很。

【在 z****e 的大作中提到】
:
: 这个就跟gc什么一样
: 托管了就好,就看有没有轮子了
: 如果手动去搞,就比较麻烦
: 有托管的,就会有很多人去用
: 开自动档舒服啊,适合我这样的懒人

d****i
发帖数: 4809
38
你扯啥,Java就是C和C++的正宗嫡传和马甲,Java的多线程完全是wrap的pthread和
Win32 thread, 完全一样。

【在 l*********s 的大作中提到】
: 扯淡,你写java的时候怎么不说。
l*********s
发帖数: 5409
39
java让程序员从内存管理中解放出来, golang让程序员从线程管理解放出来,一样亲
儿子亲闺女, 你觉得go不行只能说你品味太差。

【在 d****i 的大作中提到】
: 你扯啥,Java就是C和C++的正宗嫡传和马甲,Java的多线程完全是wrap的pthread和
: Win32 thread, 完全一样。

w***g
发帖数: 5958
40
一个东西做到清楚明白了,其实寿命也就差不多到了。
vert.x做的无非就是写网站后台。不知道你们有没有看前两天关于meteor的讨论。
再过两年,大部分网站后台的活可能都没有了。
搞IT的,只听说做一票买卖退休的,还真没啥金饭碗金技术能养人一辈子的。
vert.x vs C,50步100步而已。

【在 p***o 的大作中提到】
: 这你可真不用担心,像vert.x这么简单易用的轮子概念清楚的话上手快得很。
相关主题
Windows Thread API再次请教关于AIX中线程以及优先级的问题
多线程的程序设计有什么好书推荐? (转载)重复利用threads的问题
coroutine comes to Java - Project Loom怎么 kill 一个 thread 啊
进入Programming版参与讨论
l*********s
发帖数: 5409
41
然而这和java程序员没啥关系。java和c命运差不多,成熟了也就没啥搞头了。

【在 z****e 的大作中提到】
:
: 这个就跟gc什么一样
: 托管了就好,就看有没有轮子了
: 如果手动去搞,就比较麻烦
: 有托管的,就会有很多人去用
: 开自动档舒服啊,适合我这样的懒人

l*********s
发帖数: 5409
42
exactly, it行业火的原因就是不断的推陈出新,一个技术吃一辈子根本就是个坏事。

【在 w***g 的大作中提到】
: 一个东西做到清楚明白了,其实寿命也就差不多到了。
: vert.x做的无非就是写网站后台。不知道你们有没有看前两天关于meteor的讨论。
: 再过两年,大部分网站后台的活可能都没有了。
: 搞IT的,只听说做一票买卖退休的,还真没啥金饭碗金技术能养人一辈子的。
: vert.x vs C,50步100步而已。

T********i
发帖数: 2416
43
其实这个C++库我有做。
但是,
第一,我最早要今年11月2号以后才能公开。
第二,我现在没有任何开源的计划。
现在,欢迎继续和我叫板指控我吹牛。
d****i
发帖数: 4809
44
放屁,你要当IT的妓女没人拦着你,要当医生就得有像wdong和goodbug这样的人。

【在 l*********s 的大作中提到】
: exactly, it行业火的原因就是不断的推陈出新,一个技术吃一辈子根本就是个坏事。
l*********s
发帖数: 5409
45
大势如此,你同不同意有个蛋用?

【在 d****i 的大作中提到】
: 放屁,你要当IT的妓女没人拦着你,要当医生就得有像wdong和goodbug这样的人。
d****i
发帖数: 4809
46
大势个屁,你看狗的go再过几年消失的无影无踪了都有可能,这种自我折腾真是妓女的
本质偏好,一天换个主,三十后变黄脸婆。

【在 l*********s 的大作中提到】
: 大势如此,你同不同意有个蛋用?
l*********s
发帖数: 5409
47
得了吧,你觉得自己是明星大碗,看客们只会觉得这么老了还要和小鲜肉抢客源真真可
怜。

【在 d****i 的大作中提到】
: 大势个屁,你看狗的go再过几年消失的无影无踪了都有可能,这种自我折腾真是妓女的
: 本质偏好,一天换个主,三十后变黄脸婆。

g*****g
发帖数: 34805
48
那是写 CRUD, 商业逻辑总得有人来做。到给个需求机器人就给实现之前,码农的活不
会变少。

【在 w***g 的大作中提到】
: 一个东西做到清楚明白了,其实寿命也就差不多到了。
: vert.x做的无非就是写网站后台。不知道你们有没有看前两天关于meteor的讨论。
: 再过两年,大部分网站后台的活可能都没有了。
: 搞IT的,只听说做一票买卖退休的,还真没啥金饭碗金技术能养人一辈子的。
: vert.x vs C,50步100步而已。

w***g
发帖数: 5958
49
话说把网络I/O做得超快对我等平民百姓有啥实际应用?请科普下。
我看了你的帖子有点中毒了,想写点啥东西玩玩。

【在 T********i 的大作中提到】
: C/C++做I/O最优化的方案是每个CPU socket一个网卡(每个Socket都有独立的IOH)。
: 同时每个socket用一个core单线程处理I/O。
: 任何违背这个原则的方案都不是最优的,也就是说你增加网卡数量或者线程数量说明你
: 不合格。
: 我估计我的建议用处不大。我只能帮到这里了。

p*u
发帖数: 2454
50

check out Intel DPDK

【在 w***g 的大作中提到】
: 话说把网络I/O做得超快对我等平民百姓有啥实际应用?请科普下。
: 我看了你的帖子有点中毒了,想写点啥东西玩玩。

相关主题
怎么知道一个线程结束没有?在main()里面创建了几个线程,如何等待所有线程都结束?
[合集] 为什么多个线程生成的随机数是一样的?Pthread一个牵涉两个线程同步,每轮先串行后并行的问题
请教一个c语言实现多线程的问题关于线程读写全局变量的问题
进入Programming版参与讨论
d****i
发帖数: 4809
51
你也老大不小了,怎么还这么喜欢装嫩,愿做妓女请自便。

【在 l*********s 的大作中提到】
: 得了吧,你觉得自己是明星大碗,看客们只会觉得这么老了还要和小鲜肉抢客源真真可
: 怜。

w***g
发帖数: 5958
52
DPDK我知道。但是用来干嘛?
刚刚看了篇USENIX 2015 best paper,用software distributed shared memory
做大数据处理。里面有个图显示RDMA比TCP要快两三倍。
感觉最后都是拚硬件。InfiniBand一根网线就要上百,
网卡上千,交换机一个好几万。都是大投资啊。
相比之下,花千把块钱买个Titan X就可以玩deep learning了,
要平民化得多。

【在 p*u 的大作中提到】
:
: check out Intel DPDK

T********i
发帖数: 2416
53
我也想不出来对你有啥实际应用。
对有些产业应该有用。比如微信之类聊天服务,IoT接入设备之类的,一台Server几十G
throughput支持上千万长连接。节约几十倍的硬件你说有用没有用?
关键的是,现在绝大多数孩子不理解常识。你和他说常识他认为你扯淡。你告诉他有时
候单核单线程最优他就是不理解。呵呵。

【在 w***g 的大作中提到】
: 话说把网络I/O做得超快对我等平民百姓有啥实际应用?请科普下。
: 我看了你的帖子有点中毒了,想写点啥东西玩玩。

z****e
发帖数: 54598
54
vert.x让你从内存,cpu,硬盘,线程管理中解放出来
这个纯粹就是看封装程度,vert.x已经把封装做到了极致
剩下的就是提供统一接口给不同的脚本语言
并且在这个基础之上,发展各个领域自身的脚本

【在 l*********s 的大作中提到】
: java让程序员从内存管理中解放出来, golang让程序员从线程管理解放出来,一样亲
: 儿子亲闺女, 你觉得go不行只能说你品味太差。

z****e
发帖数: 54598
55

once again
不是网站的后端,是所有东西的后端
包括socket, streaming这些
甚至还有file system
如果你现在还认为这个东西只能做website的话
那就太凹凸了
另外,front end的东西一直都在变,这个很正常
但是back end的东西,20年前的java,10年前的spring
都在被大面积使用中,你没写过企业软件,这个是硬伤
java的大部分东西都是一层一层往上累积
跟front end三十年河东三十年河西不是一回事
back end从java开始,每次新潮流涌现
都会从中抽取几个做得特别好的留下来
然后寻找其他部分的互补,目前看
back end几乎所有部分都被很好滴填补上了
要说还有什么没有,那就是各个domain自身的scripts还比较缺乏
比如r,很多领域都缺少r这样的脚本
而将来jvm和vert.x统一backend之后
需要做的就是在这个基础之上,作出各种脚本引擎来
实际上vert.x已经朝着这个目标大幅迈进了
os->jvm->vert.x->scripts,这个就是一个进步
跟website的一天到晚就做http还有webpage不是一回事
vert.x对于java的强化,就类似java对于os以及c的强化一样
这次强化过去之后,这些东西就慢慢不再重要起来
就变成了纯粹的数字
我们从来没有人认为it有什么技术可以吃一辈子
但是我们也同样认为,有些东西是永远不会被淘汰的
就像20年前的java,10年前的spring那样
而不是每隔十年重构一次系统,backend从来不是这种搞法
backend是搭积木,frontend是涂写板
两回事,不要用frontend的思路来看待backend的大系统
还是那句话,你没写过企业软件,这个是硬伤

【在 w***g 的大作中提到】
: 一个东西做到清楚明白了,其实寿命也就差不多到了。
: vert.x做的无非就是写网站后台。不知道你们有没有看前两天关于meteor的讨论。
: 再过两年,大部分网站后台的活可能都没有了。
: 搞IT的,只听说做一票买卖退休的,还真没啥金饭碗金技术能养人一辈子的。
: vert.x vs C,50步100步而已。

z****e
发帖数: 54598
56

我个人认为
语言到了java这一个level
基本上就是极致了
剩下的通过类库扩展
而不是在语法上翻来覆去地改
拜托,类库也可以实现语言内置的功能点好不好
就像quasar之于java
只不过有些语言直接做到了语言本身中去
有些语言通过类库扩展
这就像ide,你觉得是插件的ide比较流行呢
比如eclipse, idea
还是以前那种,给你一个ide,然后什么都有流行?
比如jbuilder
现在都是通过扩展来做了,语言只负责最核心的内容
类似的,vert.x也只负责最核心的部分
剩下的通过扩展来搞,你们这种换一个场景就换一个语言的搞法落伍了

【在 l*********s 的大作中提到】
: 然而这和java程序员没啥关系。java和c命运差不多,成熟了也就没啥搞头了。
z****e
发帖数: 54598
57
换一个场景就换一个语言
就好比某些公司
一开始ror,然后node,然后scala,再后来go
这些系统单个已经很恶心了,凑一起最后都是屎坑
在不同的语言的eco中切换,人的大脑会厌烦这些切换
卢森堡就是一个三语言国家
结果很多小孩子满脑子都是单词
最后出不了文学大师
同样道理,你同一个功能用不同语言实现
看上去很酷,其实都是屎坑
维护起来,心中草泥马各种奔腾而过
擦过屁股的应该都深受其害
没擦过屁股的猴子不是好猴子
g*****g
发帖数: 34805
58
吹牛逼的时候有用。show鸡鸡的时候然并卵。

十G

【在 T********i 的大作中提到】
: 我也想不出来对你有啥实际应用。
: 对有些产业应该有用。比如微信之类聊天服务,IoT接入设备之类的,一台Server几十G
: throughput支持上千万长连接。节约几十倍的硬件你说有用没有用?
: 关键的是,现在绝大多数孩子不理解常识。你和他说常识他认为你扯淡。你告诉他有时
: 候单核单线程最优他就是不理解。呵呵。

T********i
发帖数: 2416
59
就知道你这个傻逼会跳出来。
我说有傻孩子不懂常识,你就出来认领。
你问问wdong,这个是不是常识?
再次问候你父母。这个家教lol。

【在 g*****g 的大作中提到】
: 吹牛逼的时候有用。show鸡鸡的时候然并卵。
:
: 十G

d****i
发帖数: 4809
60
魏老师息怒,你和好虫都是这里我敬佩的人。说说你的IoT的backend的方案吧,怎么增
加throughput,如果用单机的话,用什么协议。

【在 T********i 的大作中提到】
: 就知道你这个傻逼会跳出来。
: 我说有傻孩子不懂常识,你就出来认领。
: 你问问wdong,这个是不是常识?
: 再次问候你父母。这个家教lol。

相关主题
Python Concurrency 主流是用啥实时应用在IOS, Android上那一个容易实现
请教python高手异步编程的问题如何GDB调试因pthread_cond_wait()阻塞的线程? (转载)
MFC里如何判断一个线程处在Wait的状态?我是一个线程 (转载)
进入Programming版参与讨论
g*****g
发帖数: 34805
61
超过1万并发用户,每上一个数量级都会有新的问题和解决方案。连1000用户都没见过
,成天装逼我这千万并发用户单机怎么处理,太监里的战斗机而已。不服拿app store
里下载数目大家看看就是。尼玛用户还有吹出来的?

【在 d****i 的大作中提到】
: 魏老师息怒,你和好虫都是这里我敬佩的人。说说你的IoT的backend的方案吧,怎么增
: 加throughput,如果用单机的话,用什么协议。

w***g
发帖数: 5958
62

C10K是10年前的问题了。现在流行的是C10M。这10M个用户大部分只是连在那里而已,不
是所有用户同时都拼了命地在发数据。而且也不肯能是啥复杂到要读写数据库的应用,
参考这个
http://c10m.robertgraham.com/p/manifesto.html
$1200的单机的性能参数(文中没说是啥机器,我估计是一个router或load balancer之
类的东西)
- 10 million concurrent connections
- 10 gigabits/second
- 10 million packets/second
- 10 microsecond latency
- 10 microsecond jitter
- 1 million connections/second
不过用java写的话估计到不了。
store

【在 g*****g 的大作中提到】
: 超过1万并发用户,每上一个数量级都会有新的问题和解决方案。连1000用户都没见过
: ,成天装逼我这千万并发用户单机怎么处理,太监里的战斗机而已。不服拿app store
: 里下载数目大家看看就是。尼玛用户还有吹出来的?

g*****g
发帖数: 34805
63
这种 benchmark意义不大。有几个应用是不用连数据库的?一连数据库你再看你能支持
多少。
再说了,根本的是你有机会面对那么多用户。意淫自己有屠龙术就是装逼而已。

,不

【在 w***g 的大作中提到】
:
: C10K是10年前的问题了。现在流行的是C10M。这10M个用户大部分只是连在那里而已,不
: 是所有用户同时都拼了命地在发数据。而且也不肯能是啥复杂到要读写数据库的应用,
: 参考这个
: http://c10m.robertgraham.com/p/manifesto.html
: $1200的单机的性能参数(文中没说是啥机器,我估计是一个router或load balancer之
: 类的东西)
: - 10 million concurrent connections
: - 10 gigabits/second
: - 10 million packets/second

T********i
发帖数: 2416
64
很多用户同时收发这种系统throughput一般能达到网卡的极限带宽。毕竟仅仅是存储转
发而已。
一般一个two way server total throughput达到40G没有问题。
你算算,双CPU,每个CPU 12 cores。只有一个Core管I/O收发。给OS留一个core就好了
。还有10个Core,能干多少事?
那个蠢货就让他一直蠢下去好了。毕竟他这种没脸没皮的,就算我系统摆在他面前,他
也不会去死。家教问题,无解。

,不

【在 w***g 的大作中提到】
:
: C10K是10年前的问题了。现在流行的是C10M。这10M个用户大部分只是连在那里而已,不
: 是所有用户同时都拼了命地在发数据。而且也不肯能是啥复杂到要读写数据库的应用,
: 参考这个
: http://c10m.robertgraham.com/p/manifesto.html
: $1200的单机的性能参数(文中没说是啥机器,我估计是一个router或load balancer之
: 类的东西)
: - 10 million concurrent connections
: - 10 gigabits/second
: - 10 million packets/second

g*****g
发帖数: 34805
65
你单机把银河系都做了也是然并卵。见过1000个并发用户再来吹吧,太监中的战斗机。

【在 T********i 的大作中提到】
: 很多用户同时收发这种系统throughput一般能达到网卡的极限带宽。毕竟仅仅是存储转
: 发而已。
: 一般一个two way server total throughput达到40G没有问题。
: 你算算,双CPU,每个CPU 12 cores。只有一个Core管I/O收发。给OS留一个core就好了
: 。还有10个Core,能干多少事?
: 那个蠢货就让他一直蠢下去好了。毕竟他这种没脸没皮的,就算我系统摆在他面前,他
: 也不会去死。家教问题,无解。
:
: ,不

w***g
发帖数: 5958
66
应用不一样。我做的服务,有时候单机每秒处理10个请求就不错了。
你肯定也觉得没用。
比如cloudflare, riverbed这种,C10M还是很有用的。这块也能算得上
一个industry了。

【在 g*****g 的大作中提到】
: 这种 benchmark意义不大。有几个应用是不用连数据库的?一连数据库你再看你能支持
: 多少。
: 再说了,根本的是你有机会面对那么多用户。意淫自己有屠龙术就是装逼而已。
:
: ,不

T********i
发帖数: 2416
67
你的毛病是听不懂人话。家教下做。估计当年五胡乱华,八国联军的时候祖上家里都没
留人。lol。

【在 g*****g 的大作中提到】
: 你单机把银河系都做了也是然并卵。见过1000个并发用户再来吹吧,太监中的战斗机。
g*****g
发帖数: 34805
68
我说的很明白,重要的是做,不是装逼。要吹 能做C10m, 就拿个产品出来,否则有卵
用。傻逼太监都丢人两年了,还是屁都没有。12306做成计数器,谁信谁傻逼。

【在 w***g 的大作中提到】
: 应用不一样。我做的服务,有时候单机每秒处理10个请求就不错了。
: 你肯定也觉得没用。
: 比如cloudflare, riverbed这种,C10M还是很有用的。这块也能算得上
: 一个industry了。

T********i
发帖数: 2416
69
你这种无知无耻的。还有脸上来找抽。
是不是家族遗传受虐狂?

【在 g*****g 的大作中提到】
: 我说的很明白,重要的是做,不是装逼。要吹 能做C10m, 就拿个产品出来,否则有卵
: 用。傻逼太监都丢人两年了,还是屁都没有。12306做成计数器,谁信谁傻逼。

g*****g
发帖数: 34805
70
LOL,傻逼太监就别出来现了。尼玛没鸡鸡就没底气呀。

【在 T********i 的大作中提到】
: 你这种无知无耻的。还有脸上来找抽。
: 是不是家族遗传受虐狂?

相关主题
我是一个线程 (转载)多线程的程序设计有什么好书推荐? (转载)
C10M除了socket以外,还牵涉其他方面的技巧coroutine comes to Java - Project Loom
Windows Thread API再次请教关于AIX中线程以及优先级的问题
进入Programming版参与讨论
T********i
发帖数: 2416
71
说过了,你这种不要脸的,即使系统摆在你面前你也不会去死。
你说过,这种高性能IO你认为没有可能,白纸黑字的证据。
现在又让我做出来给你看。太把你自己当回事了。
从你成天像只苍蝇一样恶心人的表现看。你爹妈家教的责任比较大。欢迎知情的私信给
我。我倒要看看这一家人都是怎样的极品?呵呵。

【在 g*****g 的大作中提到】
: LOL,傻逼太监就别出来现了。尼玛没鸡鸡就没底气呀。
g*****g
发帖数: 34805
72
你丫1000个用户都没见着,一千万用户撑不撑得起有蛋用。傻逼还嘴硬。

【在 T********i 的大作中提到】
: 说过了,你这种不要脸的,即使系统摆在你面前你也不会去死。
: 你说过,这种高性能IO你认为没有可能,白纸黑字的证据。
: 现在又让我做出来给你看。太把你自己当回事了。
: 从你成天像只苍蝇一样恶心人的表现看。你爹妈家教的责任比较大。欢迎知情的私信给
: 我。我倒要看看这一家人都是怎样的极品?呵呵。

T********i
发帖数: 2416
73
操你妈,你说的是人话么?难道你爹妈你全家都是这种说话方式?
简直是水浒里面的泼皮牛二。
牛二道:“怎么杀人刀上没血?”杨志道:“把人一刀砍了,并无血痕,只是个快。”
牛二道:“我不信,你把刀来剁一个人我看。”杨志道:“禁城之中,如何敢杀人?
你不信时,取一只狗来杀与你看。”牛二道:“你说杀人,不曾说杀狗!”杨志道:“
你不买便罢,只管缠人做甚么?”牛二道:“你将来我看。”杨志道:“你只顾没了当
,洒家又不是你撩拨的!”牛二道:“你敢杀我?”杨志道:“和你往日无冤,昔日无
仇,一物不成两物,现在没来由杀你做甚么?”

【在 g*****g 的大作中提到】
: 你丫1000个用户都没见着,一千万用户撑不撑得起有蛋用。傻逼还嘴硬。
1 (共1页)
进入Programming版参与讨论
相关主题
Python Concurrency 主流是用啥多线程的程序设计有什么好书推荐? (转载)
请教python高手异步编程的问题coroutine comes to Java - Project Loom
MFC里如何判断一个线程处在Wait的状态?再次请教关于AIX中线程以及优先级的问题
实时应用在IOS, Android上那一个容易实现重复利用threads的问题
如何GDB调试因pthread_cond_wait()阻塞的线程? (转载)怎么 kill 一个 thread 啊
我是一个线程 (转载)怎么知道一个线程结束没有?
C10M除了socket以外,还牵涉其他方面的技巧[合集] 为什么多个线程生成的随机数是一样的?
Windows Thread API请教一个c语言实现多线程的问题
相关话题的讨论汇总
话题: c++话题: 线程话题: thread话题: java话题: go