• C++并行编程1


    what is concurrency

    我们可以一边看电视,一边唱歌。人并行非常容易理解,但是计算机呢?是不是我们一边编辑着word文档,一边听着歌,这样计算机就是在并行吗?不一定欧,如果你计算机是单核,就一定不是并行了,而是把你的任务分成你根本感觉不到的任务片,近似在并行执行,其实是在串行执行。如果是双核,也不一定,有可能一个核上同时执行两个任务,也有可能是并行欧,不同核执行不同的任务。

    并行执行有两种实现方法:
    多进程:启动比较复杂并且比较慢,操作系统需要额外的资源来管理进程,但是容易写比线程安全的代码。

    多线程:线程之间更容易通信,启动和通信也比进程开销小。

    why use concurrency

    • 拆分任务
    • 合理利用性能

    通常有三种并行的方法:

    task parallelism

    把一个任务拆分成不同部分,并行执行

    data parallelism

    把数据分成不同部分,线程在不同数据上执行相同操作。

    embarrassingly parallel

    算法变为并行执行算法

    why not use concurrency

    • 执行任务容易完成,但是线程启动也需要开销
    • 启动线程太多,容易消耗完内存和地址空间(特别是32位机器),容易消耗完系统资源,比如每个链接建立一个线程,还有切换开销。

    hello world

    需要在C++11环境下编译。

    	#include <iostream>
      	#include <thread>
    
      	void hello()
      	{
      	     std::cout<<"hello world"<<std::endl;
      	}
     
     	int main()
     	{
     	    std::thread t(hello);
     	    t.join();
     	    return 0;
     	}
    
  • 相关阅读:
    android隐藏底部虚拟键Navigation Bar实现全屏
    TextView.setTextColor颜色值的理解
    GridLayout自定义数字键盘(两个EditText)
    EditText的一些属性及用法
    比较两个Long对象值
    vue全家桶(vue-cli,vue-router,vue-resource,vuex)-1
    vue-vuex状态管理-1
    vue-router进阶-3-过渡动效
    vue-router进阶-2-路由原信息
    vue-router进阶-1-导航守卫
  • 原文地址:https://www.cnblogs.com/jacksu-tencent/p/3920955.html
Copyright © 2020-2023  润新知