C++并发编程实践:构建应用程序与操作栈解析

需积分: 50 19 下载量 100 浏览量 更新于2024-08-11 收藏 14.83MB PDF 举报
"“开发情景”中的“建立应用程序”-c++ concurrency in action(中文版-高清) - AE开发指南(中文).pdf" 这篇资源主要讨论的是在开发环境中创建应用程序的相关知识,特别是涉及到撤销和重做功能的实现。这部分内容可能出自《C++ Concurrency in Action》这本书的某个章节,它探讨了如何在C++编程中处理并发问题。虽然原文没有直接引用并发概念,但撤销/重做功能通常涉及到对状态的管理和更新,这可能涉及到线程安全和同步问题,因此与并发编程相关。 在描述中提到了`Operation Stack`,这是一个用于存储和管理撤销/重做操作的数据结构。操作栈是一个典型的后进先出(LIFO)结构,与函数调用栈类似,但在这里它用于记录用户可以撤销或重做的一系列动作。例如,当用户执行删除操作时,这个操作会被添加到操作栈中。如果用户决定撤销,栈顶的操作(即最近执行的操作)就会被回滚,比如在删除图形元素的例子中,就是将元素移动回原始位置。 `ToolbarControl`是一个组件,它包含了一个操作栈,用于支持撤销和重做功能。每个工具栏上的命令项都关联着一个底层命令,这些命令负责将操作添加到操作栈中。开发者通常会为应用程序创建一个单独的`ControlsOperationStack`,并将其分配给每个`ToolbarControl`实例,这样每个工具栏都可以有自己的撤销/重做能力。 此外,资源还提到了《ArcGIS Engine 开发指南》,这是一本关于地理信息系统(GIS)开发的专业书籍,由环境系统研究所公司(ESRI)出版。书中可能详细介绍了如何使用ArcGIS Engine构建GIS应用,包括如何自定义对话框(CustomizeDialog)和集成撤销/重做功能。ArcGIS是GIS领域广泛应用的软件平台,提供了一系列API(如ArcObjects)供开发者创建地图应用、进行数据编辑和分析。 虽然这部分摘要没有提供具体代码示例或详细的技术细节,但可以看出在实际开发中,为了实现撤销/重做功能,开发人员需要设计和实现能够正确添加和回滚操作的机制,并确保在多线程环境下操作栈的安全性。这通常涉及对并发编程的理解,包括锁、条件变量、原子操作等并发控制机制。同时,还需要理解GIS开发的基本概念和技术,以整合这些功能到GIS应用中。