随笔分类 - 1_ C++
摘要:回调函数(Callback Function)是一种常见的编程模式,它是一段可以被传递给其他函数的代码,可以在特定的条件满足时被调用执行。回调函数通常作为参数传递给其他函数,以便在某些事件发生时执行。 在C++中,回调函数通常是一个指向函数的指针,它可以作为参数传递给其他函数,这些函数可以在需要时调
阅读全文
摘要:函数不可重入:函数运行被打断以后,不能恢复运行或运行结果不符合预期。 Linux下的pthread_mutex_t控制的代码区域默认是不可重入的。下面是一个使用C++代码演示pthread_mutex_t不可重入的例子: #include <iostream> #include <pthread.h
阅读全文
摘要:C++11提供了命名空间this_thread来表示当前线程,该命名空间中有四个函数:get_id()、sleep_for()、sleep_until()、yield()。 1. get_id()、sleep_for()和sleep_until() this_thread::sleep_for(ch
阅读全文
摘要:参考:b站视频 线程的任务函数可以是普通函数、类的非静态成员函数、类的静态成员函数、lambda函数、仿函数。下面举例说明: #include <unistd.h> #include <iostream> #include <thread> // 线程类头文件。 using namespace st
阅读全文
摘要:在 C++ STL 容器中,size_type 是一个无符号整数类型,用于表示容器中元素的数量或大小。由于不同平台和编译器有不同的实现,因此使用 size_type 可以确保代码的可移植性和兼容性。 下面是使用 size_type 的一个示例: #include <iostream> #includ
阅读全文
摘要:# 1.一文读懂社长的TinyWebServer 为提高效率,我们将在这部分通过线程池来实现并发(多线程并发),为每个就绪的文件描述符分配一个逻辑单元(线程)来处理。 Linux下有三种IO复用方式:epoll,select和poll,为什么用epoll,它和其他两个有什么区别呢? - 对于sele
阅读全文
摘要:[python程序异步协程程序、asyncio](https://www.cnblogs.com/codingbigdog/p/17532669.html)中使用python实例说明了协程可以起到基本知识,可以先看一下。 # 1.C++协程 参考:[1. C++ 协程概览](https://www.
阅读全文
摘要:异步IO:在异步IO中,首先设置好文件需要读取到哪个变量中,然后文件读取到此变量中的过程都是在内核中操作的,用户程序并不会因为读文件操作而阻塞。当文件读取完毕时,通过特定的方式通知用户程序,比如发送信号SIGIO通知用户程序文件已经读取完毕了。我们可以给信号SIGIO设置回调函数,在回调函数中将获取
阅读全文
摘要:标准输入/标准输出/标准错误与重定向 0表示标准输入。1表示标准输出。2标准错误。1和2都是默认是输出到屏幕。 linux中的>>、>、<、<<:这些符号是Linux中用于重定向输入和输出的特殊符号: 1.标准输出: ">" 用于将命令的标准输出(stdout)重定向到一个文件中,例如: $ ls
阅读全文
摘要:下面代码为什么没有任何输出: #include<cstdio> #include<unistd.h> int main(int argc, char **argv){ while(1){ sleep(1); printf("fffffff"); } return 0; } 答:由于标准输出流(std
阅读全文
摘要:volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。简单地说就是防止编译器对代码进行优化。 当要求使用volatile声明的变量的值的时候,系统总是重新从它所在的内存读取数据,而不是使用保存在寄存器中的备份。即使它前面的指令刚刚从该处读取过数据。 C/
阅读全文
摘要:类型转换种类: - C风格的类型转换:(类型说明符)表达式,如int valueB = (int) valueA; - reinterpret_cast:主要针对指针或引用,重新解释指针所指地址的内存。很强大,很少用,最好不用吧(我的想法)。reinterpret_cast执行什么动作是依赖于编译器
阅读全文
摘要:全特化和偏特化的概念: 全特化:将所有模板参数固定成指定类型,以此来告诉编译器,当为此种类型时,需要特殊处理。 偏特化:将部分模板参数固定成指定类型。函数模板是不允许偏特化的,但函数允许重载,从而声明另一个函数模板即可替代偏特化的需要。 直接参考如下链接进行学习: 首先通过链接1学习C++模板的偏特
阅读全文
摘要:extern 参考:extern声明变量详解 变量的声明: int data; // 这样既声明了data同时也定义了data extern int data; // 只声明而不定义 函数的声明: void hello(); // 函数的声明 extern void hello(); // 也是函数
阅读全文
摘要:条件变量中有以下两类函数: 唤醒函数(直接参考链接): notify_one:只唤醒队列中的第一个线程 notify_all:所有线程被一个一个唤醒,先抢到锁的先唤醒 等待函数: wait( std::unique_lock<std::mutex>& lock ):阻塞直到被唤醒 wait( std
阅读全文
摘要:在C/C++中大括号指明了变量的作用域,在大括号内定义的局部变量其作用域自变量定义开始,到大括号之后终结,举例如下: int main() { int a=0; { int b=0; a=1; //正确,还在a的作用域中 } b=1; //错误,因为不在b的作用域,b已经被销毁了 } 参考:链接
阅读全文
摘要:每篇文章的总结,只需要在标题和目标上进行总结就可以了。 # 整理进度 1_ C++(31)中有很多没有整理的,找出来整理。 # 1.C++语言基础 [C++中的头文件(.h)](https://blog.csdn.net/qq_42775938/article/details/123168445#c
阅读全文