Ant*_*ams 73
并发性是指您的代码同时执行多个操作.这通常使用显式"线程"完成,但还有其他可能性.例如,如果在代码中使用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
Run Code Online (Sandbox Code Playgroud)
新的C++ 0x标准还支持:
std::atomic<>
类模板的操作,std::mutex
,std::recursive_mutex
等)std::lock_guard<>
,std::unique_lock<>
)std::lock
和std::try_lock
功能,以管理同时获取多个锁,而不会有死锁的风险std::condition_variable
,std::condition_variable_any
)thread_local
用于声明线程局部数据的关键字我在devx.com上的文章中详细介绍了新的C++ 0x线程库:C++ 0x中的简单多线程
我在博客上写了关于C++的多线程和并发性.我还写了一本关于这个主题的书:C++ Concurrency in Action.
Mic*_*urr 17
当你说"c ++新标准如何促进"并发编程时,我假设你在谈论即将发布的(?)C++ 09标准.
目前以草稿形式出现的新标准支持以下有助于并发编程的项目:
C++ CSP2 - C++的简单并发
http://www.cs.kent.ac.uk/projects/ofa/c++csp/
CSP是基于适当的并发范例,而不是线程和锁以及所有其他方式,这些都是事后的想法.
(有关并发编程语言(也基于CSP),请参阅Occam-Pi)