• 读书笔记《C++并发编程实战》(1)


    何为并发:
        两个或者多个独立活动同时发生,对于单核心的任务切换也认为是并发。
        目前真正有意义的是硬件并发,对于多核心多线程的任务,并发程度取决于可用的硬件并发。
        任务切换存在一定的上下文切换开销,以保存当前CPU状态、PC、指令等,
        同样的切换回另个任务时需要重新加载早期的处理状态、内存载入缓存等。
        另外并发和并行也存在一定的差异。
        
    并发方式:
        多进程并发:进程间独立执行任务,且通过进程间通信传递信息。
            优点:相对独立,占用各自独立的空间,相对安全。此外通过网络
               通信的方式实现进程间通信,有时可提高并行可用性和性能、扩展能力。
            缺点:进程启动开销比较大、且占用更多的系统资源、相互间通信比较复杂或者比较慢。
        多线程并发:单个进程内部执行多个线程,线程间可共享进程的地址空间。
        
    为何使用并发:
        关注点分离:分离不同的设计实现、任务的逻辑或功能,以清晰设计或响应等,如GUI开发等。
        性能:利用多核心的能力,提高并发能力,如任务划分以并发执行节省时间开销。
        任务划分过程中可能出现任务并行、数据并行两个层次。数据并行需要精心设计可并行处理的数据。
    
    为何不使用并发:
        收益比不上成本时。如并发的复杂性、可维护性、整体并发执行后的效果、启动线程和管理线程、线程切换的开销等。
        
    C++11的线程库
        不同平台下的多线程实现(系统API)存在一定的不同很多时候使用系统级别的工具实现并发,
        C++11的线程库,因抽象不同平台会额外执行一些代码,故而会存在一定的性能影响;
        除非特殊情况,C++11标准线程库的实现已足够好,否则才使用特定于平台的低级的工具。
        另外C++11线程可以和相应不同平台的API工具结合使用(C++11的nativa_handle)。
  • 相关阅读:
    大数据量业务订制和解决方案思考
    gc内存回收机制
    HashMap的扩容机制, ConcurrentHashMap和Hashtable主要区别
    开源工作流引擎内核主要关心的是什么?
    mysql查询计划
    mysql 存储引擎MYSIAM和INNODB特性比较
    任意输入字符,对字符匹配进行判断
    java 对list中对象按属性排序
    mysql 写数据操作几次硬盘?
    win7_64位+U盘制作centos6.3+安装centos
  • 原文地址:https://www.cnblogs.com/haomiao/p/11647376.html
Copyright © 2020-2023  润新知