C++多线程
文章平均质量分 65
milkhoko
这个作者很懒,什么都没留下…
展开
-
C++多线程(八):条件变量condition_variable、wait、notify_one、notify_all
目录条件变量condition_variablenotify_one和notify_all条件变量condition_variablestd::condition_variable实际上是一个和条件相关的类(等待一个条件达成),需要和互斥量配合使用,使用时要生成一个这个类的对象。std::condition_variable my_cond;然后通过使用my_cond的成员函数wait、notify_one、notify_all来进行互斥量的操作。std::unique_lock<std:原创 2021-07-05 12:33:50 · 500 阅读 · 0 评论 -
C++多线程(七):unique_lock详解
目录unique_lock取代lock_guardunique_lock的第二个参数std::adopt_lockstd::try_to_lockstd::defer_lockunique_lock的成员函数成员函数lock()成员函数unlock()成员函数try_lock()成员函数release()unique_lock所有权的传递(转移)unique_lock取代lock_guardunique_lock是一个类模板,比lock_guard更加灵活,效率上低一点,内存占用大一点首先是uniqu原创 2021-07-04 23:20:31 · 7681 阅读 · 1 评论 -
C++多线程(六):lock()的死锁问题
目录死锁的概念死锁的演示死锁的解决方法std::lock()函数模板死锁的概念死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。解释起来就是:两个线程两把锁,其中一个线程先锁锁头1,再锁锁头2,另外一个线程先锁锁头2,再锁锁头1当第一个线程锁住锁头1时,第二个线程锁住锁头2,此时两个线程都要继续上锁,但是第一个线程无法上锁锁头2,第二个线原创 2021-07-04 12:32:42 · 994 阅读 · 0 评论 -
C++多线程(五):创建多个线程以及数据共享问题
创建和等待多个线程vetorvector(称为容器) 是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。先看下面例程:// C++stu_03.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//本例程用于学习创建多线程以及数据共享问题#include <iostream>#include <windows.h>#include <thread>#include<vector>using namespa原创 2021-07-04 11:20:04 · 2246 阅读 · 0 评论 -
C++多线程(四):传递临时对象作为线程参数
4.1引用和指针的陷阱4.2类型转换的陷阱原创 2021-07-03 20:03:07 · 437 阅读 · 0 评论 -
C++多线程(三):使用类和lambda表达式创建线程
使用类创建线程#include <iostream>#include <windows.h>#include <thread>using namespace std;//创建子线程类class myClassThread{public: void operator()() { cout << "我的class线程开始执行" << endl; Sleep(1000); cout << "我的clas原创 2021-06-28 23:18:37 · 1136 阅读 · 2 评论 -
C++多线程(二):线程的创建和启动
线程的创建、开始和结束主线程从main()函数开始执行,创建的其他线程也要从一个函数开始运行(初始函数),一旦这个函数运行结束,代表线程运行结束1、thread创建线程:添加头文件thread、编写线程函数并在main()函数中添加线程首先编写一个线程函数2、join()3、detach()4、joinable()...原创 2021-06-28 16:52:24 · 2236 阅读 · 1 评论 -
C++多线程(一):基本概念
并发、进程、线程1、并发两个或更多的任务同时发生:一个程序同时执行多个独立的任务单核cpu:某一时刻只能执行一个任务,多任务时要进行多次“任务切换”(不是真正的并发--并发假象)多核cpu:同一时刻可以执行多个任务(硬件并发)。使用并发可以同时执行多个任务,提高性能2、可执行程序windows下后缀为.exe的文件3、进程可执行程序运行起来,就叫创建了一个进程。4、线程每个进程都有一个主线程,主线程是唯一的,一个进程中只能有一个主线程;进程启动后主线程自动启动原创 2021-06-28 10:59:23 · 250 阅读 · 0 评论