在这两天的 OSCON 上,Intel 宣布,Threading Building Blocks,Intel 众多软件开发工具中的一个,open source 了。协议是 GPLv2。
TBB 获得过 17 届 Jolt Productivity Awards,是一套 C++ 模板库,和直接利用 OS API 写程序的 raw thread 比,在并行编程方面提供了适当的抽象,当然还包括更多其他内容,比如 task 概念,常用算法的成熟实现,自动负载均衡特性还有不绑定 CPU 数量的灵活的可扩展性等等。STL 之父,Alexander Stepanov 对此评价不错,他说“Threading Building Blocks… could become a basis for the concurrency dimension of the C++ standard library”。其他 TBB 的早期用户,包括 Autodesk,Sun,Red Hat, Turbo Linux 等亦然。现在 O’Reilly 已经出版了一本 Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism。
TBB 可以在 Windows,Linux 和 OSX 上运行,支持 Intel, Microsoft 和 GNU 工具,这就覆盖了绝大多数需求范围。
Intel 内部大概在 2004 年有了 TBB 的概念,2005 年 team 成立,2006 年 8 月发布 1.0,今年 4 月 1.1,这个程序看上去势头不错。
和业界目前层出不穷的并行解决方法/方案比较,TBB 有自己的优势,例如:和 OpenMP 比…哦,他们几乎是两回事…关于 OpenMP 有个笑话:OpenMP is great if you have Fortran code, or C code that looks like Fortran, or C++ that looks like Fortran,或者说,一句话,flat do-loop centric parallelism。另外,如果你的项目不适合甚至不允许 pragma 来 prgma 去的,那就麻烦了。
Jakob Nielsen 和 Steve Jobs 的看法有很多类似之处,大多数用户要么根本不知道自己要什么,要么说出来需要什么后,旋即转身要求其他更好的继而让他刚刚告诉你的东西成为废话。你得敏锐地观察他们的行为,分析趋势,这是个预测未来的活儿,你得做好准备去迎合至今尚不存在,将来却会铁板钉钉的那个“需求”。用户可能会觉得你现在提出的 idea 非其所需,或者不过是忽悠人,甚至蠢得可以,这样的过程在 iPod 身上发生过,在 Parallelism 身上正在发生。