`
tubaluer
  • 浏览: 1443976 次
文章分类
社区版块
存档分类
最新评论
  • sblig: c / c++ 是不一样的都会输出 100
    j = j++

Visual Studio 11开发指南(16)C++11更新-多线程和异步操作管理

 
阅读更多

增强支持的标准 C + + 11

现在支持此预览的 Visual Studio 头的 STL 中的新头文件对其他地方的多线程和异步操作管理。

<thread>,<future>,<atomic>,<time>,<mutex>,<condition_variable>,<ratio>,<filesystem>

头文件<thread>作为其名称来创建和操作线程的建议


传递给线程的类的构造函数的一种方法,而不是在这里我们使用Lambda 表达式中引入C + + 11Join ()方法,这是一个调用阻塞,使主线程等待,直到线程完成他的工作。如果我们想要解耦变量的类型线程线程 Windows 那里 t 的detach()方法,这样做。背计划的detach()方法,不会密切与线程句柄关联的窗口 (CloseHandle)。因此可能是使用变量的 t 型线,我们好的旧 Windows API 通过检索的本机句柄,但代码将成为便携式少得多。


在线程, join ()方法是实质相同,上述代码 (在 Windows 平台) 课程。

很可能也与要检索的可用使用hardware_concurrency()方法的虚拟处理器数目的线程 ,


操作的线程,总是会对同步与保护的关键地区。头<mutex>提供这种排斥同步对象相互示例的效果
注意,使用锁来总是对性能的影响 !


注意this_thread命名空间以检索当前线程的标识号或时辰类结合创建点期望的介绍.

它也是执行的可以控制对生产者/消费者下面的示例使用标头<condition_variable>,作为多个线程流。
在这里,您将注意到我们使用我们的消费者和我们的生产者互斥体,我们转向方法wait()变量的类型condition_variable_any (它是可能还使用condition_variable unique_lock <mutex>型,后者互斥体直接传递到类型unique_lock的初始化过程中未报告的状态。非终止状态指示可以获得互斥体,由另一个线程。


在我们的示例中,该互斥体将传递给无信号使用锁() 方法。不过如果队列为空 (即是说是否生产者有仍没有产生,该线程condition_variable_any我们这个期望方法wait()通过释放互斥体,以便该线程的制作人,甚至等待获取此互斥锁 (lock() 方法),就可以开始生产项目在队列中的。
此互斥体用来保护尾 <int> 缓冲区类型。等待() 方法使用另一种机制将这挂起,并将等待唤醒,制造者线程仅当它将调用它的方法notify_one()。

您还会注意我们如何使用这里的元素类型,递增 1 在单个原子操作中我们的队列的元素。在强烈多线程的上下文,另外,例如将总是公平的保证元素操作。

头文件<future>。未来用于执行异步操作的返回结果,要检索后,但没有不同步或线程流量控制机制。示例中,我们使用,作为互斥体的多个线程的交会点的方法 join () 和控制流对象,未来不是这句话。

事实上,假设您想要简单的加法的两个整数 A + B,但是来自两个不同的线程所返回的结果。

在下面的示例中,作为未来的概念



在这里宣布int类型的两个数值以异步类型作为参数的构造函数,它作为其名称在不同的线程中执行异步操作的指示。

两个未来将返回的结果,但不知道何时在未来 !Get ()方法,这是一个调用保证两个整数的增加会正确。
未来,我们使用语法强烈靠近同步语法的异步执行。

分享到:
评论

相关推荐

    VS2017实现Udp socket多线程通信(C++)

    包括UDP服务器客户端多线程通信程序(用select实现),基于Visual Studio2017实现,已编译测试过,用到的朋友记得关闭SDL检查

    Visual C++ 2005 编程技巧大全光盘

    全书内容涵盖了大量的Visual C++ 2005编程新技术和新理念,包括ToolStrip控件应用、泛型应用、注册表管理、WMI管理规范使用、XML文件处理、多线程处理、程序异常处理、文件压缩及解压缩、文件加密解密、文件访问权限...

    VISUAL C++MFC扩展编程实例

    本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程知识、技巧和方法。全书分为三个部分和附录。第一部分介绍...

    Visual C++ MFC扩展编程实例.PDF

    本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程知识、技巧和方法。全书分为三个部分和附录。第一部分介绍...

    visual C++_Turbo C串口通信编程实践

    第2章 VC多线程串口编程工具CSerialPort类 2.1 类功能及成员函数介绍 2.2 应用CSerialPort类编制基于对话框的应用程序 2.3 应用CSerialPort类编制基于单文档的应用程序 2.4对CSerialPort类的改进 2.5 在Visual ...

    VISUAL C++MFC扩展编程实例(想学MFC的朋友一定不要错过)

    3.1.2 同步和异步通信 44 3.2 窗口消息 44 3.2.1 打开和关闭 44 3.2.2 读与写 45 3.2.3 回顾 45 3.3 动态数据交换 46 3.3.1 客户/服务器 46 3.3.2 打开和关闭 46 3.3.3 读和写 47 3.3.4 其他DDE函数 48 3.3.5 MFC...

    VISUAL C MFC扩展编程实例与源码

    Visual c++ MFC扩展编程实例及源代码,非常经典的学习教材 本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程...

    精通Windows.API-函数、接口、编程实例.pdf

    3.5 集成开发环境 Visual Studio 62 3.5.1 工程类型选择与配置 62 3.5.2 Visual Studio快捷方式 64 3.5.3 生成项目 64 3.5.4 调试 65 3.5.5 选项与设置 65 3.6 开发环境配置总结 66 第4章 文件系统 ...

    asp.net知识库

    用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性问题 (2) Using sqlite with .NET Visual Studio 2005 中的新 DataSet 特性 MySQL 和 .Net2.0配合使用 与DotNet数据对象结合的自定义数据...

    精通WindowsAPI 函数 接口 编程实例

    3.5 集成开发环境 Visual Studio 62 3.5.1 工程类型选择与配置 62 3.5.2 Visual Studio快捷方式 64 3.5.3 生成项目 64 3.5.4 调试 65 3.5.5 选项与设置 65 3.6 开发环境配置总结 66 第4章 文件系统...

Global site tag (gtag.js) - Google Analytics