摘要: C++ 单例模式有两种写法: 饿汉模式 和 懒汉模式 饿汉模式: 优点:对象提前创建好,使用的时候无需等待,效率高 缺点:对象提前创建,所以占用内存高 以空间占时间 懒汉模式: 优点:使用对象时,对象才创建,不会提前占用内存 缺点:首次使用对象时,需要等待对象的创建,效率低 以时间换空间 饿汉模式: 阅读全文
posted @ 2023-06-18 23:57 十一的杂文录 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 为了避免单例类在多线程中重复的创建,下面提供了两种解决方法: 1.互斥锁+双重检查 2.std::call_once() 方法一:互斥锁+双重检查 #include <iostream> #include <thread> #include <mutex> #include <list> using 阅读全文
posted @ 2023-06-18 23:20 十一的杂文录 阅读(16) 评论(0) 推荐(0) 编辑
摘要: #include <iostream> #include <thread> #include <mutex> #include <list> #include <future> using namespace std; int myThread(int num) { cout << "myThrea 阅读全文
posted @ 2023-06-18 23:14 十一的杂文录 阅读(17) 评论(0) 推荐(0) 编辑
摘要: *:如果 std::async 中传递参数 std::lunnch::deferred ,就需要等待调用 get() 或者 wait() 才会执行,并且代码非子线程运行,而是在主线程中执行 #include <iostream> #include <thread> #include <mutex> 阅读全文
posted @ 2023-06-18 23:13 十一的杂文录 阅读(36) 评论(0) 推荐(0) 编辑
摘要: condition_variable 、 wait 、 notify_one 、 notify_all *:notify_one:通知(唤醒)一个线程 *:notify_all:通知(唤醒)多个线程 #include <iostream> #include <thread> #include <mu 阅读全文
posted @ 2023-06-18 23:10 十一的杂文录 阅读(49) 评论(0) 推荐(0) 编辑
摘要: timed_mutex 、 try_lock_for 、 try_lock_until #include <iostream> #include <thread> #include <mutex> #include <list> using namespace std; class A { publ 阅读全文
posted @ 2023-06-18 23:04 十一的杂文录 阅读(46) 评论(0) 推荐(0) 编辑
摘要: // *:这里的lock是函数模板,最少传两个互斥量 // 第一种,使用 lock 和 unlock std::mutex m_mutex1; std::mutex m_mutex2; std::lock(m_mutex1, m_mutex2); m_mutex1.unlock(); m_mutex 阅读全文
posted @ 2023-06-18 23:02 十一的杂文录 阅读(9) 评论(0) 推荐(0) 编辑
摘要: *:使用 lock_guard 后,就不可以使用 lock() 和 unlock() *:lock_guard 和智能指针一样,会自动解锁 #include <iostream> #include <thread> #include <mutex> #include <list> using nam 阅读全文
posted @ 2023-06-18 23:00 十一的杂文录 阅读(10) 评论(0) 推荐(0) 编辑
摘要: mutex 互斥量的作用是保护共享数据 *:有 lock() 就一定要有 unlock() #include <iostream> #include <thread> #include <mutex> #include <list> using namespace std; class A { pu 阅读全文
posted @ 2023-06-18 22:58 十一的杂文录 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 前言: #include <thread> thread.join() // 阻塞 thread.detach() // 非阻塞 thread.joinable() // bool,判断线程是否支持join或者detach 正文: 创建线程有三种方式,分别是:使用函数来创建线程、使用自定义的类来创建 阅读全文
posted @ 2023-06-18 22:52 十一的杂文录 阅读(201) 评论(0) 推荐(0) 编辑
摘要: #include <iostream> #include <string> #include <sstream> int main() { // 方法一:123456 std::string a = "123"; std::string b = "456"; std::string c; c.app 阅读全文
posted @ 2023-06-18 22:38 十一的杂文录 阅读(644) 评论(0) 推荐(0) 编辑
摘要: std::chrono::milliseconds stopTime(2000); std::this_thread::sleep_for(stopTime); 阅读全文
posted @ 2023-06-18 22:33 十一的杂文录 阅读(89) 评论(0) 推荐(0) 编辑