首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并发编程c++?

并发编程c++?
EN

Stack Overflow用户
提问于 2008-10-20 15:16:46
回答 7查看 43K关注 0票数 47

我到处都听到关于并发编程的说法。你们能解释一下它是什么吗? c++的新标准是如何促进同样的工作的?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2008-10-20 15:27:16

并发性是指你的代码同时做多件事。这通常是通过显式的“线程”来完成的,但也有其他的可能性。例如,如果您在代码中使用OpenMP指令,那么支持OpenMP的编译器将自动为您生成线程。

线程是“执行线程”的缩写。在单线程C++程序中,执行从main()开始,然后按顺序执行。在多线程程序中,第一个线程从main开始,但是附加的线程可以由应用程序启动,这些线程从用户指定的函数开始。然后,这些线程与原始线程并发或并行运行。

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

代码语言:javascript
复制
void my_function()
{
    // do stuff
}
std::thread my_thread(my_function); // run my_function in its own thread

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

使用

  • 原子值和操作的std::atomic<>类模板、用于数据保护的
  • 互斥锁(std::mutexstd::recursive_mutex等)和易于管理锁生存期的
  • 锁类(<代码>D11、std::condition_variable_any)
  • futures,和<代码>D16函数)管理同时获取多个锁的管理,而不会冒着使用变量的风险来简化事件的等待(<代码>D19、deadlock
    • condition承诺和打包的任务,以简化线程之间的数据传递和等待值准备就绪)。这解决了经典的"how do I return a value from a thread“question.
    • thread-safe初始化本地静态对象和声明线程本地数据的关键字
    • thread_local

    的问题

我在我的关于devx.com的文章中对新的C++0x线程库进行了更详细的概述:Simpler Multithreading in C++0x

我在my blog上用C++编写了关于多线程和并发的文章。我还在写一本关于这个主题的书:C++ Concurrency in Action

票数 74
EN

Stack Overflow用户

发布于 2008-10-20 15:38:30

当您说“c++新标准如何促进”并发编程时,我假设您指的是即将推出的(?)即将发布的C++09标准。

新标准目前处于草案形式,它支持以下有助于并发编程的项目:

互斥互斥(

  • classes)
  • condition variables --这对于Windows来说特别好,因为在Win32中很难正确地实现条件变量)。
    • 的原子类型和地址互斥线程互斥存储(几个月前刚刚添加到标准草案中)
    • 互斥(互斥互斥变量--这对于Windows来说特别好。这意味着微软最终应该至少在MSVC++运行时提供对条件变量的支持,这样就很容易在WIn32上获得正确的条件变量语义。
票数 17
EN

Stack Overflow用户

发布于 2008-10-20 15:18:29

也许这个视频可能会给你带来一些启发:-)

http://channel9.msdn.com/posts/Charles/The-Concurrency-Runtime-Fine-Grained-Parallelism-for-C/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/218786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档