首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏python教程

    C++11多线程编程(一)——初始多线程

    首先还是那个问题,我们为什么需要多线程?单线程编程做的好好的,又简单又好用,为什么要弄出一个多线程编程呢?难道前人是为了设计而设计了个多线程的?显然这是不可能,那么是什么原因呢? 说完了多线程的相关概念,我们来说一说多线程编程。 在早期C++11之前,C++在语言级别上并不支持多线程,要想实现多线程,必须通过第三方库或者调用平台系统函数来实现的,而不同平台的多线程的系统函数又都不一样,所以给多线程编程带来了很多麻烦。 但是从C++11开始,C++终于开始在语言级别上支持多线程,我们也终于可以用一份代码在多个平台上跑了。 那么C++如何实现线程呢? ,从此C++开始从语言级别上支持了多线程

    38010编辑于 2024-01-10
  • 来自专栏MasiMaro 的技术博文

    Java 学习笔记(11)——多线程

    Java内部提供了针对多线程的支持,线程是CPU执行的最小单位,在多核CPU中使用多线程,能够做到多个任务并行执行,提高效率。 使用多线程的方法 创建Thread类的子类,并重写run方法,在需要启动线程的时候调用类的start() 方法,每一个子类对象只能调用一次start()方法,如果需要启动多个线程执行同一个任务就需要创建多个线程对象

    57640发布于 2019-07-09
  • 来自专栏四月天的专栏

    C++11多线程(1)

    前言 之前的工作项目基本不使用多线程,一直对多线程的理解比较浅显,一般应用也是主从两个线程,也不涉及资源锁,以及其他的各种锁,信号量之类的,更别提线程池之类的,这次也特意学习记录一下多线程。 库知识 C++11现在也有了自己的多线程库,从C++11的线程库开始学习了解。 native_handle_type native_handle() { return _M_id.M_thread; } //hardware_concurrency 获得当前程序最大支持的线程数,多线程一般代表系统核数

    78210编辑于 2023-03-10
  • 来自专栏

    c++11多线程笔记

    1 thread类 thread f; 线程等待join() 线程分离detach()

    66110发布于 2019-05-25
  • 来自专栏cpp加油站

    c++11&14-多线程专题

    在C++11以前,C++的多线程编程均需依赖系统或第三方接口实现,一定程度上影响了代码的移植性。 C++11中,引入了boost库中的多线程部分内容,形成C++标准,形成标准后的boost多线程编程部分接口基本没有变化,这样方便了以前使用boost接口开发的使用者切换使用C++标准接口,很容易把boost 我们通过如下几部分介绍C++11多线程方面的接口及使用方法。 ,我想这都是得益于C++11的可变参数的设计风格。 线程等待在多线程编程中使用非常频繁,经常需要等待一些异步执行的条件的返回结果。

    82721发布于 2021-04-16
  • 来自专栏痴者工良

    C#多线程(11):线程等待

    在笔者认真探究多线程前,只会new Thread;锁?Lock;线程等待?Thread.Sleep()。 我们继续使用《C#多线程(3):原子操作》中的示例: static void Main(string[] args) { for (int i = SpinLock 跟 Monitor 比较像噢~https://www.cnblogs.com/whuanle/p/12722853.html#2monitor 在《C#多线程(10:读写锁)》中,我们介绍了

    2.8K30发布于 2021-04-26
  • 来自专栏给永远比拿愉快

    C++11多线程初体验

    在C++11标准之前,使用C++编写多线程程序要么需要第三方的API如pthread,要么需要依赖运行平台提供的API,使用起来很不方便。 而C++11提供了平台无关的语言级别的支持,这极大得方便了我们开发人员。 C++11多线程支持主要通过使用如下的头文件中的类或者函数:<atomic><thread><mutex><condition_variable><future>。 这就涉及到多线程中资源的竞争问题。 那么如何解决这个问题呢? return 0; } 这样执行上面程序不管多少次输出总是:Result = 1000000 此外,atomic类还提供了封装好的一些函数操作,详见:C++参考-atomic 初始C++多线程

    2.5K30发布于 2019-01-22
  • 来自专栏Zaqdt_ACM

    C++11多线程shared_future

           对于future的讲解可以去看这篇博客:std::future,那么对于future来说,因为它的get()函数中实现的是移动语义,所以对于future获取的值,只能get一次,那么如果有多个线程需要对其多次取值的话就需要用shared_future了。shared_future可以通过future对象,来将其转换成shared_future的对象,也可以直接通过shared_future来获取future值。

    90010发布于 2020-02-17
  • 来自专栏大学生计算机视觉学习DeepLearning

    c++11多线程入门教程(一)

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/10914162.html 最近是恰好写了一些c++11多线程有关的东西,就写一下笔记留着以后自己忘记回来看吧 ,也不是专门写给读者看的,我就想到哪就写到哪吧   c++11呢,就是c++升级之后的一个版本,现在马上就出c++20了,里面增加了很多对多线程支持的类,让多线程编程更加简单了,好了废话不多说,先来建立一个简单的多线程编程案例 ,看看c++11多线程编程创建到底有多么的简单。 从示例可以看到c++11下创建多线程多么方便了吧 ,比在Linux下用posix创建还简便,而这个也是可以在windows使用的(想想windows下多线程的代码,看着都头疼好吧,乱七八糟一大堆)。 本来想写完几个c++11多线程常用的函数和操作的,但是有点想去看一下哥斯拉2,但是哥斯拉1还没看,先去看哥斯拉1好了  今天就先写这么多了hhhhhh

    2.5K40发布于 2019-05-24
  • 来自专栏大学生计算机视觉学习DeepLearning

    c++11 多线程入门教程(一)

    ,恰好写了一些c++11多线程有关的东西,就写一下笔记留着以后自己忘记回来看吧,也不是专门写给读者看的,我就想到哪就写到哪吧   c++11呢,就是c++升级之后的一个版本,现在马上就出c++20了,里面增加了很多对多线程支持的类 ,让多线程编程更加简单了,好了废话不多说,先来建立一个简单的多线程编程案例,看看c++11多线程编程创建到底有多么的简单。 从示例可以看到c++11下创建多线程多么方便了吧 ,比在Linux下用posix创建还简便,而这个也是可以在windows使用的(想想windows下多线程的代码,看着都头疼好吧,乱七八糟一大堆)。 2.互斥量的使用   跟往常的多线程一样,多线程在运行过程中都会对临界区进行访问,也就是一起访问共享资源。 这样就会造成一个问题,当两个线程都要对一个变量int value值假如为11,加一时,线程一取出11 进行加一还没有存入value,这时候线程二又取得value的11进行加一,然后线程一存入12,线程二又存入

    1.2K20发布于 2019-06-03
  • 来自专栏python教程

    C++11多线程编程(八)——死锁问题

    std; 5 6 mutex mt1; 7 mutex mt2; 8 void thread1() 9 { 10     cout << "thread1 begin" << endl; 11

    39910编辑于 2024-01-10
  • 来自专栏python教程

    C++11多线程编程(四)——原子操作

    今天和大家说说C++多线程中的原子操作。首先为什么会有原子操作呢?这纯粹就是C++这门语言的特性所决定的,C++这门语言是为性能而生的,它对性能的追求是没有极限的,它总是想尽一切办法提高性能。

    88410编辑于 2024-01-10
  • 来自专栏python教程

    C++11多线程编程(九)——总结篇

    这篇是多线程编程系列的总结篇,复盘一下前面讲到的多线程的各个知识点。要想成为一个优秀程序员,多线程编程是永远也绕不开的话题,必须要掌握,不同的语言实现多线程的方式都各不相同,但原理都是相通的。 为何需要多线程,因为要充分利用CPU的性能,特别是多核CPU,提升效率,提高用户体验。 早期的C++在语言级别上并不支持多线程,要实现多项只能依靠不同系统多线程函数,这给C++多线程编程带来了一定的麻烦。但在C++11开始,C++正式的支持了多线程编程。 那么在多线程编程中需要考虑哪些问题呢?需要注意到的点是哪些呢?在多核CPU下,多线程是并发执行的,那么产生了死锁的话又该怎么处理呢?在线程非常多的情况下,如何有效管理各个线程呢? 在《C++11多线程编程》系列中,我大概的都把上面提到的这些问题讲到了,从互斥锁mutex开始,线程池、原子操作、信号量、死锁等等,我能够想到的大部分都见到了。

    29710编辑于 2024-01-10
  • 来自专栏CPP开发前沿

    【C++11】 让多线程开发变得简单--线程

    C++ 11之前,C++语言并没有提供支持,想要开发多线程程序就要借助于操作系统提供的多线程接口,但是,这样并不能开发跨平台可移植的并发程序,C++11提供了多线程语言支撑,使得程序的可移植性大大提升。 同样,在使用线程进行编码时也要关注多线程的一些缺点,如:变量共享导致的结果差异、多线程调试、死锁等很多现实的问题,因此在使用多线程编码时要格外注意。 1.1 创建线程 C++ 11中创建一个线程是很简单的事情,只需要使用std::thread就可以轻松创建一个线程,我们要做的只是提供一个线程函数或者函数对象,创建线程时也可以同时给线程函数指定参数, } int main() { std::thread first (foo); first.join(); return 0; } 2 互斥量 互斥量是一种线程同步的手段,用来保护多线程同时访问的共享数据 ,在C++ 11中,提供了多种互斥量,如下: std::mutex: 独占互斥 std::timed_mutex:带有超时的互斥量 std::recursive_mutex:递归互斥量 std::recursive_timed_mutex

    70510发布于 2021-11-16
  • 来自专栏从零开始学自动化测试

    python笔记11-多线程之Condition(条件变量)

    前言 当小伙伴a在往火锅里面添加鱼丸,这个就是生产者行为;另外一个小伙伴b在吃掉鱼丸就是消费者行为。当火锅里面鱼丸达到一定数量加满后b才能吃,这就是一种条件判断了。 这就是本篇要讲的Condition(条件变量) 一、Condition Condition(条件变量)通常与一个锁关联。需要在多个Contidion中共享一个锁时,可以传递一个Lock/RLock实例给构造方法,否则它将自己生成一个RLock实例。 可以认为,除了Lock带有的锁定池外,Condition还包含一个等待池,池中的线程处于状态图中

    1.8K51发布于 2018-04-08
  • 来自专栏有趣的django

    11.多线程、多进程和线程池编程

    as_completed import time #为什么要线程池 #主线程中可以获取某一个线程的状态或者某一个任务的状态,以及返回值 #当一个线程完成的时候,主线程立马知道 #futures可以让多线程和多进程编码接口一致 as_completed import time #为什么要线程池 #主线程中可以获取某一个线程的状态或者某一个任务的状态,以及返回值 #当一个线程完成的时候,主线程立马知道 #futures可以让多线程和多进程编码接口一致

    58820发布于 2019-08-26
  • 来自专栏CPP开发前沿

    【C++11】 让多线程开发变得简单--条件变量

    条件变量是C++11中提供的又一种线程同步机制,它可以阻塞一个或者多个线程,直到收到其它线程发出的超时或者通知才能够唤醒正在等待的线程,条件变量需要和互斥量配合使用,在C++ 11中共提供了两种条件变量

    1.1K10发布于 2021-11-16
  • 来自专栏逆向技术

    64内核开发第11讲.多线程开发.以及同步.

    多线程编程 一丶多线程安全. 1.什么是多线程 现在的程序基本是很多个线程.不想以前一样.而进程和线程的关系就是 一对多的关系. 进程做外键放到线程中. 数据关系是这样的. 而多线程就会出现数字不一样的情况. 如下: ring3代码演示. 你的程序是多线程安全的.就是各个线程 都有自己的局部变量. 不会影响. 但是如果你使用全局资源.就是多线程不安全的.必须使用同步函数(加锁) 这样才会保证你的程序是安全的. 4.多线程的同步与互斥 多线程同步: 同步就是两个线程协同做一件事情. 多线程互斥 多个线程是排他性的.排着队访问一个资源. 比如我们上面的Ring3的例子就是互斥的. 每个线程必须互斥的访问.

    84720发布于 2019-07-02
  • 来自专栏C++11

    C++11多线程内存模型:从入门到精通

    C++11标准的出现,为多线程编程带来了重大变革,其中内存模型的改进尤为关键。本文将带领小白们从入门到精通,深入了解C++11多线程内存模型。 2.3 C++11之前的多线程编程困境在C++11标准发布之前,C++语言对于多线程编程的支持相对薄弱,开发者往往需要借助第三方库或平台特定的API来实现多线程功能。 而且,由于缺乏统一的内存模型规范,程序容易出现数据竞争和其他多线程相关的问题,这些问题往往难以调试和修复。2.4 C++11内存模型的重要性C++11的出现,为多线程编程带来了重大变革。 八、总结C++11多线程内存模型为开发者提供了强大而灵活的工具,帮助我们在多线程环境下编写高效、安全的代码。 希望本文能够帮助小白们从入门到精通C++11多线程内存模型,在多线程编程的道路上越走越远。

    45800编辑于 2025-06-18
  • 来自专栏CPP开发前沿

    【C++11】 让多线程开发变得简单--异步操作

    C++ 11中提供了异步操作相关类和函数,不同的类具备不同的功能,总体来说类主要有:std::future,std::promise,std::package_task,函数主要是std::async。

    94630发布于 2021-11-16
领券