写点什么

Weathr:综合演示 C++ 14、DirectX 和 XAML

  • 2014-02-18
  • 本文字数:964 字

    阅读完需:约 3 分钟

大多数技术演示都是相当轻量级的,只是用很小的应用演示一些关键概念。Weathr 却并非如此,它是一个全功能的 3D 气象图,同时提供了在线服务集成和语义缩放(semantic zoom)。

Weathr 的核心是使用现代编码约定的 ISO C++。这意味着不使用 new 和 delete 关键字。相反,几乎所有东西都是通过组合使用 shared、unique 和 weak 智能指针来处理的。

用户界面基于 DirectX 和 XAML 构建,其中前者用于 3D 组件。后者需要使用 C++/CX,这是微软专门为基于 WinRT 的应用创建的语言扩展。

演示的另一项技术是 PPL( Parallel Patterns Library )。该库支持使用通过 lambda 表达式链接在一起的异步方法。PPL 主要用于通过 C++ REST SDK 和 Bing Maps 及 World Weather Online 交互。异步条件下的内存管理有点棘手,所以 Thomas Petchel 写道:

当有一组链接到一起的异步任务,而且一个任务负责创建一个对象或资源,而随后的另一个任务使用该资源时,我发现的另一个模式就出现了。尽管通常可以简单地在一个任务中创建该资源,然后将其传递给随后的任务,但是这并不是总能行得通的。这是生命周期与间接性的问题——不管对象是 C++ 还是 C++/CX 类型的,因为我们异步工作,负责准备背景工作的调用函数很快就会退出,因此任何分配在该函数的栈上的对象都会走出其作用域。为使对象在活动的任务间共享,必须获取所有 lambda 表达式或仿函数(functor)中引用这些对象的智能指针(通常是 C++ 和 C++/CX 对象的 shared_ptr)。通过使用 shared_ptr,我们创建了一个间接层,支持对象在一个任务中分配(例如,写入一个任务中),然后在随后的任务中使用(例如读取)。

确保 async 回调在正确的线程上运行是另一个问题。对于验证线程,Thomas 有如下提示:

在调试构建版本中,在启动时记录 ASTA 线程的线程 ID。在每个任务延续(task continuation)中,确认我们是在主线程(ASTA)还是后台线程上运行。

在任务延续中,显式地指定是要在当前上下文(例如,建立任务链的上下文,它可能是 ASTA 线程或 MTA 线程)上运行,还是要在后台(MTA)上下文上运行。

该示例应用中也探索了其他技巧与技术,包括 HTTP 请求节流、语义缩放、手势识别和Windows 8 动态磁贴。

Weathr 基于 Apache 2 许可发布,可以在 CodePlex 上获取。

查看英文原文: Weathr, a Comprehensive Demonstration of C++ 14, DirectX, and XAML

2014-02-18 19:011909
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 151.7 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

GitHub星标70K阿里大佬手写的Spring Boot实战手册

Java架构师迁哥

教你给场景添加天空盒,超简单!

ThingJS数字孪生引擎

大数据 大前端 开发 可视化 数字孪生

再获权威认可!DataPipeline实时数据融合平台通过信通院大数据产品能力评测

DataPipeline数见科技

大数据 数据融合 数据管理

一位年薪 180 万的蚂蚁金服大佬扔给我的笔记,建议看完

Java架构师迁哥

HashMap从入门到精通,原创好文,值得收藏!

wljslmz

Java hashmap java8 HashMap底层原理

2021百度云智峰会|DataPipeline携手百度赋能实时数据资产构建与应用

DataPipeline数见科技

大数据 数据融合 数据管理

一图读懂DataPipeline实时数据融合平台V3.0

DataPipeline数见科技

大数据 数据融合 数据管理

Redis学习之Redis概述及原理、基本操作及持久化

Linux服务器开发

redis 分布式 后端 中间件 Linux服务器开发

智邦国际ERP系统31.99版本发布,解锁精准高效协同管理模式!

叶落便知秋

北鲲云超算平台——让科技更好地服务于用户

北鲲云

Hightopo可视化入局“智慧工厂”,助力企业改革创新

一只数据鲸鱼

数据可视化 绿色工业 3D数据可视化 高炉炼铁 智慧工业

底层技术支撑智慧出行,汽车智能化发展下区块链大放异彩

旺链科技

区块链产业

GNURadio报错Unable to create context(windows10环境)

allu

问题总结

【工作感悟】2021最值得加入的互联网公司有哪些

欢喜学安卓

android 程序员 面试 移动开发

用好“实时数据管理”助推器,旭辉集团加快数字化转型步伐

DataPipeline数见科技

大数据 数据融合 数据管理

免费分享JDBC与MyBatis的优秀图书

Java入门到架构

Java

一周信创舆情观察(6.28~7.4)

统小信uos

TDengine JDBC整合Druid

山石道人

涛思数据 tdengine Druid Spring MVC taos-jdbc

吹水、面试、进阶齐飞!Github霸榜的阿里分布式设计实录也太香了

Java架构师迁哥

【工作感悟】Android大厂高级面试题灵魂100问

欢喜学安卓

android 程序员 面试 移动开发

不愧是阿里内部“SpringCloudAlibaba学习笔记”看完直接斩获12家offer

Java 编程 架构 面试 微服务

2021年,BAT接连入局!“低代码”为何能备受资本追捧?

优秀

低代码

32岁的我裸辞了,八年Java老鸟,只因薪水被应届生倒挂,在闭关三个月后拿到阿里Offer,定级P7!

Java架构师迁哥

永续合约交易所开发,虚拟币合约交易系统源码

KDD CUP 2021首届图神经网络大赛放榜,百度飞桨PGL获得2金1银

百度大脑

神经网络 百度

金九银十面试必备,“全新”突击真题宝典,阿里腾讯字节都稳了

Java 编程 程序员 架构 面试

DataPipeline实时数据融合平台V3.0里程碑版发布!澎湃新动能

DataPipeline数见科技

大数据 数据融合 数据管理

Mobileye智慧出行再加码,中国市场生态建设取得新进展

E科讯

半年摸爬滚打,我是如何从小白进阶渗透测试工程师

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞分析

前端性能优化实践 | 百度APP个人主页优化

百度开发者中心

大前端 百度app

越学越有趣:『手把手带你学NLP』系列项目07 ——机器翻译的那些事儿

百度大脑

机器学习 nlp

Weathr:综合演示C++ 14、DirectX和XAML_语言 & 开发_Jonathan Allen_InfoQ精选文章