zoukankan      html  css  js  c++  java
  • C++并发多线程(一)

    并发:两个或者更多的任务同时发生,一个程序同时执行多个独立的任务。

    以往计算机 单核CPU 某一个时刻只能执行一个任务 由操作系统调度 每秒钟进行多次所谓的任务切换
    并发的假象(不是真正的并发),这种切换(上下文切换)时要有时间开销的。

    线程

    每个进程(执行起来的可执行程序),都有一个主线程 这个主线程是唯一的 也就是一个进程中只能有一个主线程。
    当你执行要给刻执行程序 ,产生了一个进程后 这个主线程就随着这个进程默默启动起来了
    ctrl+f5运行这个程序的时候,实际上是进程的主线程来执行 这个main函数中的代码
    主线程与进程唇齿相依
    线程 用来执行代码的 一条代码的执行道路
    主线程是系统创建的 其他线程走的是别的道路 甚至去不同的地方
    每创建一个新线程 我就可以在同一个时刻 多干一个不同的是
    多线程(并发)
    线程并不是越多越好 每个线程 都需要一个独立的堆栈空间(1M) 线程间的切换要保存很多的中间状态;
    切换会耗费本该属于程序运行的时间;


    总结线程:
    线程是用来执行代码的
    把线程这个东西理解成一条代码的执行通路 一个新线程代表一条新的通路
    一个进程自动包含一个主线程 主线程随着进程默默的启动并进行 我们可以通过编码来创建多个其他现场呢g
    //建议创建的数量不超过200-300个,有的时候线程太多反而降低效率
    //因为主线程是自动启动的 所以一个进程中最少也是有一个线程(主线程)

    join():同步 用于阻塞线程,表示当前线程结束了,才可以执行后面的代码。

    detach():异步 非阻塞模式,由操作系统去调用线程。

  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/tsh292278/p/10675995.html
Copyright © 2011-2022 走看看