功能模块
写有意思的代码
这个作者很懒,什么都没留下…
展开
-
基于C++11的可中断睡眠功能实现
源文件InterruptibleSleep.h#pragma once#include <atomic>#include <chrono>#include <mutex>namespace UtilityTools { using namespace std; class InterruptibleSleep { public: bool start(const chrono::milliseconds & durInMS);原创 2021-12-30 19:54:14 · 862 阅读 · 0 评论 -
基于C++11的简单日志库
程序开发时,往往只需要在控制台打印日志。但是很多日志库(如Boost.Log)虽然提供很多功能,但集成起来比较麻烦。所以需要一个功能简单,能快速集成,外部依赖少的日志库。原创 2021-11-24 16:02:21 · 774 阅读 · 0 评论 -
Windows中测量线程真正使用CPU的时间
#include <windows.h>#include <processthreadsapi.h>#include <chrono>#include <iostream>#include <stdexcept>#include <string>#include <thread>void GetThreadRunTimeInfoInWin(long double & dKrnlTmInMS, .原创 2021-08-02 20:58:32 · 412 阅读 · 0 评论 -
Boost.Lockfree官方文档
目录介绍与动机简介与术语非阻塞数据结构的性质非阻塞数据结构的性能阻塞行为的来源数据结构数据结构配置示例队列栈无等待单生产者/单消费者队列脚注介绍与动机简介与术语术语“非阻塞”表示并发数据结构,该结构不使用传统的同步原语(例如警卫程序)来确保线程安全。 Maurice Herlihy和Nir Shavit(比较“多处理器编程的艺术”)区分了3种类型的非阻塞数据结构,每种结构具有不同的属性:如果保证每个并发操作都可以在有限的步骤中完成,则数据.翻译 2021-05-16 23:52:48 · 888 阅读 · 1 评论 -
C++常用工具函数
文件相关h文件#pragma once#include <string>class FileUtil{public: /** \brief 检查指定路径的文件是否存在 \param sFilePath 待检查文件路径 \return 指定路径的文件是否存在 \except 该函数可能抛出异常 \note 该函数是多线程安全的 */ static bool isFileExist(const std::string & sFilePath);原创 2021-04-14 17:02:10 · 729 阅读 · 0 评论 -
基于C++11的跨线程简单消息队列
目录示例代码运行结果源代码示例代码#include "MessageQueue.hpp"#include <thread>#include <iostream>#include <chrono>using namespace std;using namespace std::chrono;MessageQueue<int> mq;void send(){ for (int i = 0; i < 10;.转载 2021-03-27 11:07:24 · 698 阅读 · 0 评论 -
NLog使用示例
环境Visual Studio 2017, NLog 4.6.8程序using System;using System.Threading;using System.Threading.Tasks;using NLog;namespace TestUseNLog{ class Program { static void logInAnoth...原创 2019-11-09 19:30:45 · 640 阅读 · 0 评论 -
使用Boost库Log模块实现的C++日志类
概述Boost库的Log模块用于实现日志,虽然功能强大,但比较复杂,学习起来比较费时。为此,我将其进行了封装成日志类,以方便日后使用。该日志类具有多线程安全、可以使用中文字符等优点。类头文件#pragma once#include <string>#include <boost/log/sources/severity_logger.hpp>#...原创 2019-10-07 12:56:17 · 3346 阅读 · 2 评论