- 博客(11)
- 收藏
- 关注
原创 虚函数表和虚函数表指针
虚函数表指针,顾明思议就是指向虚函数表的指针,那么这个指针在哪里呢?现在是不是就清楚了,那么我们就再讨论一下虚函数表是什么,虚函数表实际上就是存放虚函数的函数指针的一个指针数组,每一个类只有一张虚函数表,它被放在代码段,每当一个类的对象被声明定义时,其虚函数表指针指向的就是该类的虚函数表的位置。在C++中可以使用子类来覆写基类的虚函数,然后并使用基类的指针指向子类的实例,但可以通过基类的指针去调用到子类所覆写的虚函数,也就是C++中的动态绑定。虚函数表指针是什么,虚函数表又是什么,它们之间的关系又是什么?
2024-11-23 22:31:32
371
原创 std::async源码解析
2.在 main 函数中,使用 std::async 启动异步任务,传递 std::launch::async 作为第一个参数,表示任务应在新线程中异步执行。第二个参数是要执行的函数 async_task,后续参数是传递给该函数的参数。它可以在后台线程中执行一个函数,并返回一个 std::future 对象,用于获取异步任务的结果。为了模拟耗时操作,函数中包含了一个 2 秒的睡眠。3.std::async 返回一个 std::future 对象 result,用于获取异步任务的结果。
2024-11-19 10:41:31
329
原创 std::mutex
std::mutex是C++11中封装的互斥量,直接看源码defined简单看一下上面的基本api,满足了互斥量的基本使用,下面对一些具体实现进行解读在Unix系统下,这个类的私有成员变量的类型就是 pthread_mutex_t,基本可以看出是对Unix系统下的pthread_mutex_t的操作的基本封装。对于std::mutex的基本使用如下。
2024-11-18 17:15:57
423
原创 简单线程池
线程池是一种用于管理和复用一组线程的设计模式,旨在提高多线程程序的性能和资源利用率。线程池通过预先创建一定数量的线程,并将任务分配给这些线程执行,避免了频繁创建和销毁线程的开销。简而言之,线程池的实现主要就是一个任务队列加一个线程数组,我们需要使用线程执行某个任务时,只需要将任务投递到任务队列中,然后线程的执行函数会自己从任务队列中取任务进行执行。
2024-11-18 15:10:43
225
原创 C++11线程代码剖析
这是一个基础使用,我们向 t1中传入一个参数,该参数是一个函数指针,参数为空。同理我们也可以向该构造中传入带参数的函数,同时我们在构造时需要传入函数的参数。对于 __libcpp_thread_create 的实现,可以看到在Unix下实际就是pthread_create。在C++11中提供了已经封装好的线程类 std::thread,下面对该类进行一些基础的介绍和使用。然后对于__thread_proxy是一个函数模板,下面给出__thread_proxy的实现。上面是thread的构造函数的实现。
2024-11-16 21:29:32
281
原创 【cmake 与 anaconda的冲突问题】
由于安装的anaconda里带有cmake,且annnconda的bin加入到环境变量里,导致安装的cmake会与其冲突。然后在该配置里加一行,注意后面是你cmake的路径,前面查看的位置(记得需要使用 i 键进入插入模式)我们需要的是下面的哪个,可以使用两种方法解决这个问题。创件一个新环境用来后续使用自己安装的cmake。现在就可以在该环境下正常使用cmake了。最后可以得到当前环境下cmake的版本。如果使用的终端是bash的话请使用。如果使用的是zsh的话请使用。在原来的base环境中使用。
2024-05-15 16:24:57
1631
3
原创 vscode如何在每次运行时刷新终端命令行窗口
按住快捷键 command + ,进入设置,Windows 点击左下角的设置图标。然后在设置中搜索 code runner,并将下图的箭头指向勾选上就行了。
2023-10-01 13:03:19
1459
原创 VS CODE如何直接在终端运行,可以进行输入输出
最近使用vscode进行C++de练习时发现使用Run Code 总是在底端输出地方输入输出,但是该地方却不能进行输入,cin 的操作没有办法执行。于是找到了一个方法可以让代码始终在终端执行了。然后在该搜索端口输入 run in terminal会出现如下的页面。首先选择左下角的设置选项并选择其中的设置。选择最后一个选项,将该选项选上即可。进去后会显示如下界面。
2023-09-21 17:22:40
5973
4
原创 VSCODE C++函数的调用符自动补全
在该搜索框内输入Autocomplete,进入到如下页面。将下面的AutoComplete Add Parentheses选上即可。最后退出函数的调用符就可以补全了。最近开始使用VSCODE进行C++的编程,发现了在函数调动时函数的右边的括号并没有自动补全,于是上网查了许多方法,最终找到了设置中进行补全的选项。废话不多说,现在开始进行讲解,首先找到左下角的设置。如图,然后点击设置。
2023-09-21 17:14:22
1863
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人