C++
捕鲸叉
这个作者很懒,什么都没留下…
展开
-
有依赖关系多个任务的并行处理一则
有依赖关系多个任务的并行处理一则原创 2024-07-26 11:48:06 · 414 阅读 · 0 评论 -
简易好用的C++结构体与JSON文本相互转换开源库
struct_mapping开源库使用示例,可以在C++结构体与JSON文本间相互转换原创 2023-09-22 15:55:24 · 845 阅读 · 0 评论 -
MS VC 2022开发Linux应用记录之01篇
13. 在代码中设置断点,按F5进行调试。单步运行,可以从Linux终端中看到一步步的输出。14.也可以在虚拟机的~/.vs目录下找到上述C++项目,并可运行生产的目标程序。12. 生成程序,可以在linux终端中运行该程序。原创 2023-07-22 23:03:29 · 276 阅读 · 0 评论 -
手写Linux环境下C++内存泄漏检测
简单有效的Linux程序内存泄漏检测代码原创 2022-10-30 22:54:34 · 193 阅读 · 0 评论 -
手写Visual C++软件内存泄漏检测代码
简单快捷的VC++程序泄漏检测代码原创 2022-10-29 21:31:49 · 168 阅读 · 0 评论 -
VTK几个坐标的测试
获得VTK三维视图的几个主要位置的世界坐标原创 2022-09-11 23:39:03 · 391 阅读 · 1 评论 -
armadillo + openblas 编译
armadillo + openblas 编译原创 2022-08-25 12:32:36 · 534 阅读 · 0 评论 -
VC开发非MFC程序内存泄漏跟踪代码
WINDOWS 环境下使用VC开发非MFC程序内存泄漏跟踪代码原创 2022-07-03 18:26:59 · 265 阅读 · 0 评论 -
转载:VTK笔记-裁剪分割-不规则闭合圈选裁剪-vtkSelectPolyData类(黑山老妖)
vtkClipClosedSurface类使用平面集合剪裁闭合曲面。转载 2022-06-26 18:27:03 · 1212 阅读 · 0 评论 -
转载:VTK笔记-裁剪分割-三维曲线或几何切割体数据(黑山老妖)
https://blog.csdn.net/liushao1031177/article/details/118419221转载 2022-06-26 13:58:04 · 1422 阅读 · 1 评论 -
linux下抓取C++ throw调用栈
使用API钩子技术,抓取throw调用的调用堆栈。1. hook_cxa_throw-lys.hpp#pragma once#include <dlfcn.h>#include <cstddef>#include <exception>#include <signal.h>#include <execinfo.h>#include <ucontext.h>#include <thread>#i原创 2022-05-25 22:16:26 · 544 阅读 · 0 评论 -
发布本人的第一个CSDN视频,VTK的
Vtk 3D Pro 2022-05-21 23-02-40-CSDN直播原创 2022-05-22 00:09:28 · 118 阅读 · 0 评论 -
googletest 自动化测试例子合集
下面是本人的一些测试结果,仅作展示原创 2022-05-10 16:44:10 · 1233 阅读 · 0 评论 -
C++ 并发编程练习15 “最简单的线程池”
下面的代码展示了一个简单的线程池。#include <atomic>#include <functional>#include <iostream>#include <mutex>#include <queue>#include <thread>#include <vector>template<typename T>class thread_safe_queue{private:原创 2022-05-02 16:32:59 · 1015 阅读 · 0 评论 -
C++并发编程练习14 “异步任务测试”
使用feature特性,可以获得异步执行的效果。如下面的例子#include <iostream> #include <future> #include <chrono> #include <thread> int loopType (int from, int to) { for (int i = from; i != to; ++i) { std::cout <原创 2022-05-02 15:13:10 · 952 阅读 · 0 评论 -
在Linux Deepin OS 下编译ParaView的步骤
首先编译OPEN-MPIgit clone https://github.com/open-mpi/ompi.gitcd ./ompigit submodule update --init --recursivesudo apt-get install autoconfsudo apt-get install libtoolsudo apt-get install flex./autogen.pl./confiugremake再下载ParaView源代码git clone h..原创 2022-04-30 14:54:53 · 582 阅读 · 3 评论 -
在Windows/QT环境编程中同时catch C++异常和SEH异常
代码如下://.hclass CONTROLLER_API CExceptionGuard{public: CExceptionGuard(); ~CExceptionGuard();private: class Impl; Impl* prd;};// .cppclass SE_Exception : public std::exception{private: const unsigned int nSE;public: SE_Exception() noe原创 2022-04-28 12:10:40 · 1831 阅读 · 0 评论 -
C++并发编程练习13 “线程安全栈设计”
使用mutex锁,设计一个线程安全的stack,示例如下#include <exception>#include <memory>#include <mutex>#include <stack>struct empty_stack : std::exception{ const char* what() const throw();};template<typename T>class threadsafe_sta原创 2022-04-23 17:57:56 · 735 阅读 · 0 评论 -
C++并发编程练习12 “在跨线程中使用函数对象(指针)”
需要谨慎防止被保护的对象意外泄露到外界函数被更改状态。代码示例如下:#include <functional>#include <iostream>#include <mutex>#include <string>#include <thread>struct TData{public: int n; std::string str;public: TData() { n = 0; str = "Mout原创 2022-04-23 16:28:19 · 924 阅读 · 0 评论 -
C++并发编程练习11 “互斥量”
在多线程开发中,常遇到共享数据需要保护的问题,我们可以使用互斥量std::mutext类来解决这个问题,示例如下#include <chrono>#include <iostream>#include <mutex>#include <thread>#include <vector>struct scoped_mutex{ scoped_mutex(std::mutex& mtx) : mt(mt原创 2022-04-23 15:14:13 · 565 阅读 · 0 评论 -
C++并发编程练习10 “线程管理之线程ID”
std::thread有一个get_id()函数可以唯一标识系统中线程。示例如下#include <chrono>#include <iostream>#include <string>#include <thread>#include <vector>std::thread::id master;void func(int i){ std::string msg = std::to_string(i);原创 2022-04-23 00:10:48 · 964 阅读 · 0 评论 -
C++并发编程练习09 “线程管理之线程数目动态确定”
我们可以动态计算并创建合理的线程数目, 代码示例如下#include <algorithm>#include <functional>#include <iostream>#include <numeric>#include <thread>#include <vector>template<typename Iterator, typename T>struct accumulate_block{原创 2022-04-22 23:50:12 · 164 阅读 · 0 评论 -
C++并发编程练习08 “线程管理之线程容器”
我们可以使用容器保存一组线程,如下面的vector装入一组线程:#include <chrono>#include <iostream>#include <string>#include <thread>#include <vector>void func(int n){ std::string str = std::to_string(n); str += '\n'; std::cout <<原创 2022-04-22 22:40:44 · 350 阅读 · 0 评论 -
C++并发编程练习07 “线程管理之线程scoped”
线程scoped在某些场合还是很有用的,可以简化编程,不易出错。示例如下:#include <exception>#include <iostream>#include <thread>struct scoped_thread{ std::thread th; scoped_thread(std::thread&& t) { if (!t.joinable()) throw std::runtime_error("threa原创 2022-04-22 22:19:32 · 254 阅读 · 0 评论 -
C++并发编程练习06 “线程管理之线程对象转移“
线程对象可以和一般对象一样,其所有权可以被转移,示例如下:#include <iostream>#include <thread>void get(std::thread&& t){ t.detach(); int a; std::cin >> a; std::cout << a << std::endl;}void task(const char* sz){ std::cout << s原创 2022-04-22 22:03:47 · 254 阅读 · 0 评论 -
C++并发编程练习05 “线程管理之传递引用参数给任务函数与std::ref绑定”
传递引用时需注意,如下面代码注释中所述:#include <iostream>#include <thread>void task(int& n){ n *= 2;}int main(){ int a = 100; //注意必须用std::ref绑定,否则由于thread构造函数无法识别,它将传入a的副本的引用给task函数 std::thread t(task, std::ref(a)); t.join()原创 2022-04-22 20:31:57 · 282 阅读 · 0 评论 -
C++并发编程练习03 “线程管理之线程守卫”
包装类对象析构时执行线程#include <iostream>#include <thread>struct thread_guard{public: std::thread& t; explicit thread_guard(std::thread& _t) : t(_t) {}; ~thread_guard() { if(t.joinable()) t.join(); } thread_guard(thread_guard&原创 2022-04-22 10:26:31 · 225 阅读 · 0 评论 -
C++并发编程练习02 “线程管理之启动线程”
启动线程有detach()和join()两个函数,前者是异步启动,后者是同步启动并等待结束。#include <iostream>#include <thread>struct task{ int& i; task(int& i_) :i(i_) {}; void operator()() { for (int j = 0; j < 200; j++) std::cout原创 2022-04-22 10:12:38 · 141 阅读 · 0 评论 -
C++并发编程练习01 “Hello World“
#include <iostream>#include <thread>void sayHello(){ std::cout << "Hello World!\n";}int main(){ std::thread t(sayHello); t.join(); return 0;}原创 2022-04-22 10:05:50 · 137 阅读 · 0 评论 -
推荐一个在QT环境中学习OpenGL的开源项目MathMod
MathMod源代码的链接是:GitHub - parisolab/mathmod: Mathematical modelling software使用QtCreator打开.pro文件,直接编译后就能运行。其源代码和清晰,是初学OpenGL的一个不错的选择。该软件的源码目前仍然在升级之中,可以持续跟进学习。下面的截图是本人对界面布局稍作了更改后的运行图:...原创 2022-04-16 13:32:39 · 872 阅读 · 0 评论 -
在Linux下(深度OS)中编译运行3D Slicer软件
在深度OS(Linux)中编译运行3D Slicer的步骤原创 2022-04-16 13:10:40 · 1343 阅读 · 0 评论 -
C++接口类继承思考一则
C++一一般不推荐多继承,但继承接口类则不否定。由于接口类自身没有构造和析构的成本和问题,所以往往较为安全,就有较大的灵活性。接口类也允许有静态成员变量,二静态成员变量的初始化和结构不是类对象本身的职责,也就是说它属于类,而不属于对象。最近本人在设计和开发一个面向接口编程的软件系统,对接口类的灵活性,和它带来的软件专业领域隔离和软件模块隔离的好处,以及体现出来的最少知识原则有了切实的体会,推荐网友们考虑这一设计模型。比如我在一个MVC架构种,Model层有很多IModel接口的实现类原创 2022-04-09 21:32:46 · 575 阅读 · 0 评论 -
多线程单例模式一则
多线程单例创建对象时,需要加锁保护。其示例代码如下:#include <chrono>#include <iostream>#include <mutex>#include <thread>class TSingleton{public: static TSingleton* ins() { if (__instance != NULL) return __instance;原创 2022-04-05 15:50:54 · 171 阅读 · 0 评论 -
简单的Windows套接字异步编程
1. 头文件#pragma once#include <functional>#include <sstream>class CWinAsyncServer{public: //ret 0: SUCCESS //receiver和sender会运行在各自的线程中,其线程由这个函数内部启动。 int createServer(int port, std::function<void(SOCKET)>& receiver, std::fun原创 2022-03-31 16:33:16 · 1798 阅读 · 0 评论 -
Linux下从一个线程获取另一个线程的函数调用堆栈并生成转储文件
1. 使用发信号方式,在信号处理函数中调用: "sudo gcore %d", getpid()#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <execinfo.h>#include <iostream>#include <chrono>#include <thread>#include <ucontext.h>原创 2022-03-30 10:25:31 · 508 阅读 · 0 评论 -
Linux 下从一个线程检查另一个线程的函数调用栈
1. 代码 main.cpp#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <execinfo.h>#include <iostream>#include <chrono>#include <thread>#include <ucontext.h>void handler(int signo, siginfo原创 2022-03-29 21:36:04 · 186 阅读 · 0 评论 -
一个基于QT支持定时器的控制台程序例子
程序运行在Windows平台下。非阻塞控制台编程例子。、#include <Windows.h>#include <QtCore/QCoreApplication>#include <QtCore/QTimer>#include <iostream>#include <conio.h>#include <string>#include <QtCore/QTimer>#include "../xxContr原创 2022-03-27 23:35:17 · 935 阅读 · 0 评论 -
使用gcore生成当前崩溃进程生成dump文件并定位错误
使用gdb调试当前崩溃进程生成dump文件并定位错误1. 源代码 main.cpp#include <stdio.h>#include <signal.h>#include <stdlib.h>#include <stdarg.h>#include <unistd.h>static void signal_handler(int);static void dumpstack(void);static原创 2022-03-27 19:39:22 · 1196 阅读 · 0 评论 -
C++简单定时任务测试
可以使用chrono库实现简单的周期周期性定时任务#include "stdafx.h"#include <iostream>#include <chrono>#include <thread>using namespace std;using namespace std::chrono;class CSimpleTimer{public: CSimpleTimer() :m_begin(high_resolution_clock::now()原创 2022-03-27 12:27:41 · 2231 阅读 · 0 评论 -
std::vector容器 move语义测试代码
因为新项目需要有在多线程传递容器的操作,特意做了一个vector容器move语义的测试代码。1. 代码#include <iostream>#include <vector>int main(){ std::cout << "Hello World!\n"; std::vector<int> v0; for (int i = 0; i < 10; i++) v0.push_back(i);原创 2022-03-26 22:34:15 · 875 阅读 · 0 评论