banq,Rust并发和Golang的有什么区别

15-06-05 linzi
              

您好,banq,Rust并发和Golang的有什么区别,一直做java,最近正在学习golang,想用go的并发编程,处理大量数据同步的问题,无意间看到您写的Rust并发,所以由此一问;其次,对于处理大量数据的问题(不用java解决方案,如hadoop,因为太重了),希望您给出一些建议。

              

banq
2015-06-06 10:08

Go语言相对Java主要优点是其并发组件模型,Java的并发比较低级,无非是多线程与锁,想搞清楚Java中各种锁的用途,包括数据集合Collection的线程安全性与性能差异对比,需要花费大量时间与精力,包括使用经验。而Go语言使用了Channel/CEP这样的组件简单封装了多线程与锁,将以前JMS的Queue队列模型架构引入到了语言之中,两个对象之间交互只要通过Channel通道就可以。这种模型保证了并发性,有简化了编程模型,无疑受到很多人的欢迎。

Go语言当前也受到更加强劲的Rust语言挑战,如果说,Go语言的Channel是一种有形的设计,那么,Rust语言的并发模型达到无形的设计,只要你编写好函数方法,安全性与并发性就无形中得到了解决,不用专门去思考并发,有意识地去使用并发组件模型编程。