随笔分类 - C++
摘要:对象池 概念 对象池模式(Object Pool Pattern),是创建型设计模式的一种,将对象预先创建并初始化后放入对象池中,对象提供者就能利用已有的对象来处理请求,减少频繁创建对象所占用的内存空间和初始化时间。 对象池的用户可以从池子中取得对象,对其进行操作处理,并在不需要时归还给池子而非直接
阅读全文
摘要:线程安全队列(使用互斥锁进行实现) 没有设置队列上限的线程安全队列 只需要采取一个std::condition_variable变量,用于处理队列为空的情况 以下是示例代码,涉及了std::mutex和std::condition_variable、std::unique_lock、std::loc
阅读全文
摘要:完美转发 完美转发(Perfect Forwarding)是 C++11 中引入的一种编程技巧,其目的是在编写泛型函数时能够保留参数的类型和值类别(左值或右值),从而实现更为高效且准确地传递参数。通过使用右值引用和模板类型推导,完美转发允许我们在函数中以原始参数的形式将参数传递给其他函数,而不会发生
阅读全文
摘要:###右值引用 左值:表达式结束后依然存在的持久对象 右值:表达式结束后不再存在的临时对象 如果可以对表达式取地址,则为左值。否则为右值。 C++11中,右值包含两个概念: 将亡值:将要被移动的对象,T&&函数返回值,std::move返回值和转换为T&&的类型的转换函数的返回值。 纯右值:非引用返
阅读全文
摘要:###socket的阻塞与非阻塞 同步:主动请求并等待IO操作完成的方式 异步:主动请求数据后,可以去处理其它任务,随后等待IO操作完毕的通知 阻塞:线程持续等待资源中数据准备完成,直到返回响应结果 非阻塞:线程直接返回结果,不会持续等待资源准备数据结束后才响应结果 socket()函数创建的soc
阅读全文
摘要:###shared_ptr shared_ptr 是C++11提供的一种智能指针类,它足够智能,可以在任何地方都不使用时自动删除相关指针,从而帮助彻底消除内存泄漏和悬空指针的问题。 shared_ptr使用引用计数,每个shared_ptr的拷贝都指向相同的内存,在最后一个shared_ptr析构的
阅读全文
摘要:###C++ bind函数 可调用对象: 是函数指针 是一个具有operator()成员函数的类对象 是一个可被转换为函数指针的类对象 是一个类成员函数指针 可调用对象包装器:std::function: 可以保存函数延迟执行,比较适合作为回调函数。 bind函数: bind函数看做一个通用的函数适
阅读全文