当前位置:  开发笔记 > 编程语言 > 正文

并发编程c ++?

如何解决《并发编程c++?》经验,为你挑选了5个好方法。

我一直听到关于并发编程的每一个地方.你们能否对它的内容有所了解以及c ++新标准如何促进这样做?



1> Anthony Will..:

并发性是指您的代码同时执行多个操作.这通常使用显式"线程"完成,但还有其他可能性.例如,如果在代码中使用OpenMP指令,那么支持OpenMP的编译器将自动为您生成线程.

线程是"执行线程"的缩写.在单线程C++程序中,执行从main()开始,然后以顺序方式继续.在多线程程序中,第一个线程从main开始,但是应用程序可以从用户指定的函数启动其他线程.然后它们同时运行,或与原始线程并行运行.

在C++中,使用std::thread类启动0x线程:

void my_function()
{
    // do stuff
}
std::thread my_thread(my_function); // run my_function in its own thread

新的C++ 0x标准还支持:

原型值和std::atomic<>类模板的操作,

互斥用于数据保护(std::mutex,std::recursive_mutex等)

锁定类以便于管理锁定生命周期(std::lock_guard<>,std::unique_lock<>)

std::lockstd::try_lock功能,以管理同时获取多个锁,而不会有死锁的风险

条件变量以便于等待事件(std::condition_variable,std::condition_variable_any)

期货,承诺和打包任务,以简化线程之间的数据传递,并等待值准备好.这解决了经典的"如何从线程返回值"的问题.

本地静态对象的线程安全初始化

thread_local用于声明线程局部数据的关键字

我在devx.com上的文章中详细介绍了新的C++ 0x线程库:C++ 0x中的简单多线程

我在博客上写了关于C++的多线程和并发性.我还写了一本关于这个主题的书:C++ Concurrency in Action.



2> Michael Burr..:

当你说"c ++新标准如何促进"并发编程时,我假设你在谈论即将发布的(?)C++ 09标准.

目前以草稿形式出现的新标准支持以下有助于并发编程的项目:

原子类型和地址

一个线程类

thread_local存储(几个月前刚刚添加到草案标准中)

互斥(互斥类)

条件变量 - 这对Windows来说特别好,因为条件变量很难在Win32中正确实现.这意味着Microsoft最终应该至少在MSVC++运行时提供对条件变量的支持,因此很容易在WIn32上获得正确的条件变量语义.



3> Joel Martine..:

也许这个视频可能会帮助你发光:-)
http://channel9.msdn.com/posts/Charles/The-Concurrency-Runtime-Fine-Grained-Parallelism-for-C/



4> Paul Nathan..:

并发性对于给定进程具有多个执行线程.截至今天,C++并不直接支持它.但是,存在几个将给定函数绑定到新执行线程的库.Unix标准是pthreads库.



5> Dynite..:

C++ CSP2 - C++的简单并发

http://www.cs.kent.ac.uk/projects/ofa/c++csp/

CSP是基于适当的并发范例,而不是线程和锁以及所有其他方式,这些都是事后的想法.

(有关并发编程语言(也基于CSP),请参阅Occam-Pi)

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有