跳至主要內容
C++ 死锁检测
csdn 大多死锁检测代码要积分,这里我贡献出自己昨天写的死锁检测代码给大家使用,代码已精简和优化 效果图和使用代码都可以看下图 最典型的双死锁,效果图: 在这里插入图片描述 再来看看三死锁,效果图: 在这里插入图片描述 其实在其他复杂的情况下也都能帮你检测到死锁发生,及时暂停调试。如果能帮到你就给个赞吧! 代码已经被我精简并优化过了。但是还是建议大家...

muzzik小于 1 分钟笔记编程语言C++多线程
如何保证在多线程中对象的有效性?进来告诉你
大家一定在网上看过其他文章,都是说用std::shared_ptr,其实还有一种情况,就是在 std::shared_ptr 也销毁后的情况下调用对象的函数,这时候会直接抛出错误 那么我们如何安全的使用一个对象呢,很简单,利用std::shared_ptr + std::enable_shared_from_this,如果我们在对象销毁后再调用对象成员...

muzzik大约 1 分钟笔记编程语言C++多线程
减少锁竞争方法
设置双重进入锁判断,例:

muzzik小于 1 分钟笔记编程语言C++多线程
C++原子性加减
可以直接使用 xatomic 头文件之中的宏, 很多官方头文件中都包含了这个头文件,可以直接试试,不行就加一行 #include

muzzik小于 1 分钟笔记编程语言C++多线程原子操作
C++利用继承实现线程安全函数
因为被多线程搞的有点头痛,所以想了一个简单的办法,不用自己手动加锁,也免去了使用 raii 机制,直接传递一个 std::function 即可.  仅做参考 代码: raii_critical.h safe_base.h 使用: 这个最重要的功能还是退出标记,可以防止析构后其他进程仍在操作已销毁的对象造成异常。不过不能传参,局限性很大

muzzik大约 1 分钟笔记编程语言C++多线程
单临界区管理和多临界区管理的效率对比
测试代码: 里面有我改写的网络上的线程池和一些其他的类,所以在各位的电脑上直接运行不了,如果想运行可以自己改一下。 单临界区: 多临界区: 耗时: 平均值相差 5-6 倍, 大家可以不用在意多个临界区的开销问题, 可以使用对象池解决开销问题

muzzik大约 2 分钟笔记编程语言C++多线程
C++ 一句代码打印当前线程ID
功能代码: printf("ThreadID: %d\n", GetCurrentThreadId()); //经测试这个函数速度更快 printf("ThreadID: %d\n", ((uint32_t)&std::thisthread::getid()); 我们要获取线程 id,那么必然要用到 get_id 这个函数,那么我们看看这个函数返回的是...

muzzik大约 1 分钟笔记编程语言C++多线程
C++线程安全的定时器(时间堆)实现
适合事件驱动系统的时间堆定时器,所有接口都尽量设计的简单易用。; 现在大部分流行的定时器一般分为两种,时间轮,时间堆。基于设计上而言。时间轮可以设计为滴答检测超时事件,或者直接在循环中检查超时事件。而时间堆异同。; 我之前就写过一个基于滴答检测超时事件的定时器,这样的机制会造成一个问题。那就是由于休眠唤醒的时间总会有微小的误差(每次滴答),那么每次的误...

muzzik大约 3 分钟笔记编程语言C++多线程定时器
C++原子操作(atomic)使用

小白记录贴

//定义一个类型为atomic_bool的原子变量并赋初值为true
std::atomic<bool> a(true); 
```   

原子操作:
赋值:
```cpp
a = true;
a.store(true);

muzzik大约 1 分钟笔记编程语言C++多线程