`
tubaluer
  • 浏览: 1499912 次
文章分类
社区版块
存档分类
最新评论
  • 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 ()方法,这是一个调用保证两个整数的增加会正确。
未来,我们使用语法强烈靠近同步语法的异步执行。

分享到:
评论

相关推荐

    Visual Studio 2013 串口类

    打算自己重构一份,使用双线程,实现读写分离,环形数组收发数据。应用层可以向指定的环形数组,随时随地写入不定长度的数据。或者随时随地从指定的环形数组,读取不定长度的数据。《Hankin》 参考资料如下: 《MFC...

    windows visual studio c++ tcp网络编程,包含服务端和客户端

    在Windows环境下,Visual Studio是一款强大的集成开发环境,广泛用于C++编程。TCP(Transmission Control Protocol)网络编程是网络通信的基础,它提供了可靠的、基于连接的数据传输服务。本篇将深入探讨如何使用...

    Visual Studio 实现TCp 异步通信,完成文件上传和下载

    在IT领域,网络通信是应用程序之间交互的重要方式,TCP...这个过程涉及网络编程、多线程、内存管理和文件操作等多个方面的知识,对开发者的要求较高。实践中,还需要不断调试和优化,以实现稳定、高效的服务。

    Visual C++图形用户界面开发指南.pdf

    2. **多线程编程**:为了提高应用程序的响应速度和性能,可以使用MFC中的多线程支持来实现异步处理任务。 3. **国际化与本地化**:随着全球化的趋势日益明显,使应用程序支持多种语言变得越来越重要。MFC提供了一些...

    C++聊天程序源程序,有服务器和客户端(Visual studio C++源代码程序)

    Visual Studio提供了一个友好的界面,用于编写、调试和管理源代码,并且内置了对C++的全面支持,包括编译器和调试工具。 在标签中,"C++"是指编程语言,"Socket"是网络编程的关键组件,"visual stdio"是Visual ...

    串口通信编程(多线程API实现)

    本项目“串口通信编程(多线程API实现)”是基于C++语言,利用Visual Studio 2010开发环境实现的,主要涵盖了以下几个关键知识点: 1. **串口通信基础**: - 串口通信,也称为串行通信,是指数据以串行方式逐位传输...

    明日科技/Visual C++技术开发大全

    5.4 并发编程:介绍多线程、异步操作和并发控制机制。 六、数据库编程与网络编程 6.1 数据库接口:通过ODBC和ADO连接数据库,执行SQL语句,进行数据操作。 6.2 MFC数据库编程:使用MFC的Database类库进行数据库应用...

    MFC c++ vs2005 多线程 demo

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库以及Visual Studio 2005在C++环境中实现多线程编程。MFC是微软为Windows平台开发的一个C++类库,它提供了丰富的功能,使得创建Windows应用程序...

    Visual C++网络高级编程-[陈坚.陈伟].pdf

    《Visual C++网络高级编程》一书由陈坚与陈伟两位作者共同撰写,是针对Visual C++环境下网络编程的深度解析与实践指南。本书旨在为读者提供一套全面、深入的网络编程技术体系,帮助读者掌握在Visual C++平台下进行...

    《Visual C++实践与提高--网络编程篇》配盘文件

    这本书深入浅出地介绍了如何利用C++和Visual Studio的集成开发环境来构建网络应用程序,涵盖了从基本的TCP/IP协议理解到高级的网络编程技术。 网络编程是计算机科学中的一个重要领域,它涉及通过网络传输数据和实现...

    Visual C++ 开发实战-物资管理系统 (2).zip

    9. 多线程编程:如果系统需要进行后台数据处理或异步更新,你可能需要学习如何在MFC中创建和管理线程。 通过学习和实践《Visual C++ 开发实战-物资管理系统》,你不仅可以掌握MFC的基本编程技巧,还能了解实际项目...

    visual studio 2005 高级编程

    根据提供的信息来看,实际关于"Visual Studio 2005 高级编程"的具体内容并未给出,但从标题和描述中可以看出这份资料应该是介绍如何利用Visual Studio 2005进行高级编程的一些指南或者教程。接下来,我们将围绕这个...

    Visual C++ 2005数据库开发经典案例——餐饮消费管理系统

    本文将深入探讨使用Visual C++ 2005进行数据库开发的关键技术和在实际应用中的具体实践,以餐饮消费管理系统为例,帮助读者掌握如何利用这一强大的编程工具创建高效、实用的管理软件。 一、Visual C++ 2005概述 ...

    UDP异步多线程服务器和客户端程序

    为了更好地理解这个项目,你需要对UDP协议、异步编程和多线程有一定的了解,并熟悉Visual Studio的使用。你可以通过阅读源代码,了解它是如何实现异步接收和发送的,以及多线程是如何被用来并行处理请求的。此外,你...

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

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

    libzmq-v141-x64-4_3_2-Visual Studio 15 2017 x64.zip

    "v141"表示它是针对Visual Studio 2017的编译版本,"mt"则表示多线程支持。 2. **libsodium.dll**:这是一个加密库,用于提供密码学相关的安全功能,ZeroMQ可能依赖于它来实现安全的消息传输。 3. **unittest_*....

    VisualStudio2010

    2. **.NET Framework 4.0**:Visual Studio 2010基于.NET Framework 4.0,这个版本引入了多语言并发支持、动态类型、任务并行库(TPL)等新特性,使得开发多线程和异步应用变得更加简单。 3. **WPF(Windows ...

    Visual C++.NET 开发手册

    7. **多线程编程**: 了解如何在.NET中创建和管理线程,以及同步和异步编程的概念,对于开发高效的应用至关重要。 8. **ADO.NET和数据库访问**: ADO.NET是.NET Framework中用于数据库访问的组件,包括DataSet、...

    Visual Studio 2012 Cookbook

    - **并发可视化工具**:为了帮助开发者更好地理解多线程程序的行为,Visual Studio 2012引入了并发可视化工具,可以帮助开发者识别并解决并发问题。 ##### 5. Windows 8 Store应用开发 - **应用构造**:构建...

Global site tag (gtag.js) - Google Analytics