C++ 并行编程c++;?
我一直在到处听说并发编程。C++ 并行编程c++;?,c++,concurrency,c++11,C++,Concurrency,C++11,我一直在到处听说并发编程。 你们能不能给我们一些启示,以及C++新的标准如何促进同样的工作? < P>也许这个视频可能会帮助你们找到一些光:-BR> 并发是指给定进程有多个执行线程。到目前为止,C++并没有直接支持它。但是,有几个库将给定函数绑定到新的执行线程。Unix标准是pthreads库。并发性是指代码同时执行多个操作。这通常是通过显式的“线程”完成的,但也有其他的可能性。例如,如果您在代码中使用OpenMP指令,则支持OpenMP的编译器将自动为您生成线程 Thread是“执行线程”的缩
你们能不能给我们一些启示,以及C++新的标准如何促进同样的工作? < P>也许这个视频可能会帮助你们找到一些光:-BR>
并发是指给定进程有多个执行线程。到目前为止,C++并没有直接支持它。但是,有几个库将给定函数绑定到新的执行线程。Unix标准是pthreads库。并发性是指代码同时执行多个操作。这通常是通过显式的“线程”完成的,但也有其他的可能性。例如,如果您在代码中使用OpenMP指令,则支持OpenMP的编译器将自动为您生成线程 Thread是“执行线程”的缩写。在单线程C++程序中,执行从主()开始,然后按顺序进行。在多线程程序中,第一个线程从main开始,但是其他线程可以由从用户指定的函数开始的应用程序启动。然后这些线程并发运行,或与原始线程并行运行 在C++0x中,使用
std::thread
类启动线程:
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\u mutex
- 锁类便于管理锁的生命周期(
,std::lock\u guard
)std::unique\u lock
和std::lock
功能可管理同时获取多个锁,而不会出现死锁风险std::try_lock
- 缓解等待事件的条件变量(
,std::condition\u variable
)std::condition\u variable\u any
- 期货、承诺和打包任务简化线程之间的数据传递,并等待值准备就绪。这解决了经典的“如何从线程返回值”问题
- 本地静态对象的线程安全初始化
- 用于声明线程本地数据的
关键字thread\u local
- 原子类型和地址
- 线程类
- 线程\本地存储(几个月前刚刚添加到标准草案中)
- 互斥(互斥类)
- 条件变量-这对于Windows特别好,因为条件变量很难在Win32中正确实现。这意味着微软最终应该至少在MSVC++运行时提供对条件变量的支持,这样就很容易在WIn32上获得正确的条件变量语义
希望对您有所帮助。C++CSP2-C的简单并发++ CSP是一个基于适当并发范例的系统,而不是线程、锁和所有其他事后附加的东西
(参见Occam Pi了解并发编程语言(也基于CSP))这是理解并发编程的最佳文章:
阅读后,你会得到并发编程和C++的全貌。
作为一个简短的总结,我们可以说并发编程就是多任务处理。当程序被阻止时,它可以做其他事情。通常,我们在等待网络连接和处理I/O时被阻塞,我们可以使用
std::thread
和std::async
一起使用。你发布的链接返回404。文章:查看这些文章了解并发性1。2.3.如果并发计算对您来说是新的,请务必查看一些基本文章,如。