写点什么

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:011868
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

HarmonyOS NEXT 安全开发实践感悟

最新动态

基于 Databend 的实时数据汇聚平台建设

Databend

GOSIM HANGZHOU 2025即将揭幕,华为云云原生团队精彩议题抢鲜

华为云原生团队

云计算 容器 云原生 Volcano kubeedge

服装智能制造软件平台(源码+文档+讲解+演示)

深圳亥时科技

开源‘

HarmonyOS NEXT 分布式管理权限控制:安全与隐私

最新动态

批量快递信息管理,不再依赖表格!快递鸟物流管家来帮你

快递鸟

AI Compass前沿速览:Qwen3-Next、Seedream 4.0玩法教程、FireRedTTS-2、SRPO文生图模型、MiniMax Music 1.5

汀丶人工智能

拥抱AI生产力,天润融通致敬每一位AI的老师

天润融通

一文读懂电子看板管理:生产看板到底管什么?看什么?

万界星空科技

制造业 mes 可视化数据 电子看板 数字大屏

当智能机器人说”黑哥们语言是不通的“,作为开发者的你该如何应对?

老纪的技术唠嗑局

插件 #OceanBase 向量化

CAD如何查看图纸的时间信息

极客天地

Flink 与Flink可视化平台StreamPark教程(DataStreamApi基本使用)

天翼云开发者社区

大数据 flink

低代码“发起流程”功能拆解,解决 90% 用户的操作痛点

引迈信息

活动预告|天润融通走进亚马逊云科技,用Agent打造客户服务新型竞争力

天润融通

大咖来袭 操作系统开源与 AI 进化分论坛亮点剧透|2025 云栖大会

OpenAnolis小助手

开源 AI 操作系统 云栖大会 龙蜥社区

分布式管理核心功能解析:网络服务和数据传输的实现

最新动态

Flink 与Flink可视化平台StreamPark教程(CDC功能)

天翼云开发者社区

大数据 flink

低代码正在悄悄颠覆企业数字化

伤感汤姆布利柏

海外多语言音乐刷单抢单平台源码/连单卡单/叠加组规则/打针等功能

网站,小程序,APP开发定制

向量检索技术优化步骤详解——游戏公司智能客服与推荐系统落地OceanBase

老纪的技术唠嗑局

游戏 #OceanBase 向量化

且看阿里云、货拉拉、OPPO 等企业专家解码 OS 实战|2025 云栖大会

OpenAnolis小助手

开源 AI 操作系统 云栖大会 龙蜥社区

网易伏羲亮相Arm Unlocked 2025,携手Arm探索中国人工智能创新之路

网易伏羲

人工智能 arm 网易伏羲 游戏AI 永劫无间

日志易产品VP饶琛琳:AI智能体时代的可观测性

日志易

可观测性 智能体 运维监控 日志易

还停留在批处理时代吗?增量计算架构详解

tapdata

批处理 变更数据捕获 金融实时数据处理 增量计算 CDC,流处理

鸿蒙NEXT应用国际化:时区与夏令时处理

最新动态

生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!

阿里巴巴云原生

阿里云 云原生 sls

阿里云可观测 2025 年 8 月产品动态

阿里巴巴云原生

阿里云 云原生 可观测

以太坊ABI解析器零尺寸类型漏洞分析与利用

qife122

区块链 以太坊

在Proxmox中部署Security Onion的安全配置实战

qife122

网络安全 Security-Onion

Mem0 + Milvus:为人工智能构建持久化长时记忆

阿里云大数据AI技术

阿里云 AI 检索 Milvus Mem0

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