并行计算,多线程,游戏引擎
文章平均质量分 51
并行计算,多线程,游戏引擎
光电的一只菜鸡
个人技术交流群833459254
展开
-
线程的基本概念、pthread线程库的创建、互斥锁的使用、条件变量以及线程池的概念和使用
线程的基本概念、pthread线程库的创建、互斥锁的使用、条件变量以及线程池的概念和使用原创 2024-09-13 11:10:18 · 92 阅读 · 0 评论 -
C++的并发世界(十)——线程异步和通信
promise用于异步传输变量std::promise提供存储异步通信的值,再通过其对象创建的std::future异步获得结构。std::promise只能使用一次。void set_value(_Ty &&Val)设置传递值,只能用掉一次。原创 2024-04-08 18:15:45 · 354 阅读 · 1 评论 -
C++的并发世界(九)——条件变量
单例设计模式是一种常见的设计模式,用于确保某个类只能创建一个实例。由于单例实例是全局唯一的。因此在多线程环境中使用单例模式时,需要考虑线程安全的问题。原创 2024-04-08 16:06:35 · 382 阅读 · 0 评论 -
C++的并发世界(八)——lock_guard和unique_lock
lock_guard是C++的stl库中的一种互斥量封装嘞,用于保护共享数据,防止多个线程同时访问同一资源而导致的数据竞争问题。lock()和unlock()操作等同于lock_guard的构造函数和析构函数。原创 2024-04-06 22:32:44 · 510 阅读 · 0 评论 -
C++的并发世界(七)——互斥锁
假设有两个线程T1和T2,它们需要对两个互斥量mtx1和mtx2进行访问。而且需要按照以下顺序获取互斥量的所有权:-T1先获取mte1的所有权,再获取mt2的所有权。-T2先获取 mtx2的所有权。再铁取 mtx1的所有权。如果两个线程同时执行,就会出现死锁问题。因为T1获取了mtx1的所有权,但是无法获取mtx2的所有权,而T2获取了mtx2的所有权,但是无法获取 mtx1的所有权,两个线程互相等待对方释放互斥量,导致死锁。原创 2024-04-06 19:22:34 · 735 阅读 · 0 评论 -
C++的并发世界(六)——互斥解决数据共享冲突
在多个线程中共享数据时。需要注意线程安全问题。如果多个线程同时访问同一个变量。并且其中至少有一个线程对该变量进行了写操作。那么就会出现数据竞争问题。数据竞争可能会导致程序崩溃,产生来定义的结果,或者得到错误的热果。为了避免数据竞争问题。需要使用同步机制来确保多个线程之间对共享数据的访同是安全的。常见的同步机制包括互厍量。条件变量,原子授作等。原创 2024-04-03 22:47:47 · 321 阅读 · 0 评论 -
C++的并发世界(五)——线程状态切换
初始化:该线程正在被创建;就绪:该线程在列表中就绪,等待CPU调度;运行:该线程正在运行;阻塞:该线程被阻塞挂机,Blocked状态包括:pend(通过锁、事件、信号量等阻塞)、suspend(主动pend),延时阻塞(delay)、pendtime(因为锁、事件、信号量时间等超时等待)退出:该线程运行结束,等待父线程收回器控制块资源。原创 2024-04-03 22:26:29 · 782 阅读 · 0 评论 -
C++的并发世界(四)——线程传参
在线程引用中需要使用ref函数引用参数。③传递的指针变量的生命周期小于线程。②多线程共享访问一块空间。原创 2024-04-02 23:43:00 · 374 阅读 · 0 评论 -
C++的并发世界(三)——线程对象生命周期
从执行结果来看,线程在std::thread th(ThreadMain)的时候就已经启动了,join只不过相当于堵塞等待的作用,原创 2024-04-02 22:43:58 · 372 阅读 · 0 评论 -
C++的并发世界(二)——初识多线程
①并发:指两个及以上的独立活动同时进行,即一个程序执行多个独立的任务,以往计算机,单核cpu某一个时刻只能执行一个任务。若要实现多任务,则需要通过操作系统采用时间片询方法进行多进程切换。多进程切换的方法属于伪并发,操作系统保存各个任务的各种状态、执行进度需要时间开销。随着硬件发展,出现了多处理器,能够实现真正的并行执行多个任务(硬件并发)②可执行程序(文件):非常好懂,略;linux为可IO操作的文件。③进程:正在执行的可执行程序。④线程:一个进程只能有一个主线程。原创 2024-04-02 21:38:54 · 796 阅读 · 0 评论 -
VS2015下安装CUDA11.1
2.CUDA(仅支持NVIDIA)###(0)简单了解<0>参考链接 https://www.cnblogs.com/dwdxdy/p/3244508.html https://blog.csdn.net/qq_38314702/article/details/99414393 https://blog.csdn.net/qq_25071449/article/details/77680246 https://blog.csdn.net/qq_38295511/article原创 2021-06-21 16:25:38 · 1450 阅读 · 0 评论 -
【CUDA】grid、block、thread的关系及thread索引的计算
【CUDA】grid、block、thread的关系及thread索引的计算_hujingshuang-CSDN博客原创 2021-05-30 17:51:10 · 296 阅读 · 0 评论 -
cuda 程序报错 <<<
该问题的关键在于理解CUDA项目中C\C++文件需要由c++编译器进行编译,而CUDAC的源文件需要由CUDA的编译器nvcc.exe进行编译。 该问题的关键在于理解CUDA项目中C\C++文件需要由c++编译器进行编译,而CUDAC的源文件需要由CUDA的编译器nvcc.exe进行编译。为什么cu文件会被C++编译器所编译呢?原因在于我们使用#include将cu文件包含到了C++文件中。对于#include的用途,更简单的理解就是把几个文件合并成一个文件,所以,当编译C++文件中,包含其中的cu文..原创 2021-05-30 15:06:25 · 2360 阅读 · 0 评论 -
C++的并发世界(一)——线程管理
0.守护线程每个程序至少有一个线程:执行main()函数的线程,其余线程有其各自的入口函数。线程与原 始线程(以main()为入口函数的线程)同时运行。如同main()函数执行完会退出一样,当线程执 行完入口函数后,线程也会退出。在为一个线程创建了一个 std::thread 对象后,需要等待这 个线程结束;不过,线程需要先进行启动。在一些极端情况下,线程运行时,任务中的函数对象需要 通过某种通讯机制进行参数的传递,或者执行一系列独立操作;可以通过通讯机制传递信号, 让线程停止。总之,使用C++线程库启原创 2021-03-09 20:33:22 · 668 阅读 · 0 评论 -
C++的并发世界(零)——何为并发
0.并发最简单和最基本的并发,是指两个或更多独立的活动同时发生。并发在生活中随处可见,我们可以一边走路一边说话,也可以两只手同时作不同的动作,还 有我们每个人都过着相互独立的生活——当我在游泳的时候,你可以看球赛,等等。计算机领域的并发指的是在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。以前,大多数计算机只有一个处理器,具有单个处理单元(processing unit)或核心(core),如今 还有很多这样的台式机。这种机器只能在某一时刻执行一个任务,不过它可以每秒进行多次 任务切换。原创 2021-01-25 18:30:13 · 216 阅读 · 2 评论 -
UE4安装
0.UE4下载与注册安装EPIC Game;链接:https://www.unrealengine.com/zh-CN/download?install=true安装与注册略安装后启动界面如下:1.安装引擎根据UE4官方文档版本信息整理,仅供参考:根据自己的VS版本安装对应的引擎。...原创 2021-02-05 13:43:08 · 239 阅读 · 0 评论 -
UE4 or Unity?
1.UE4UE4是由全球顶级游戏EPIC公司虚幻引擎的最新版本,EPIC中国唯一授权机构GA游戏教育基地。UE4支持DirectX 11、物理引擎PhysX、APEX和NVIDIA 3D技术,以打造非常逼真的画面。UE4是一个面向虚拟现实游戏开发、主机平台游戏开发和DirectX 11个人电脑游戏开发的完整开发平台,提供了游戏开发者需要的大量的核心技术、数据生成工具和基础支持。登陆设备包括PC,主机,手机和掌机。(1)优点UE4作为后起之秀,UE4在虚拟现实游戏开发者界大出风头,其强大的开发能力原创 2021-02-04 22:59:00 · 1024 阅读 · 1 评论