c/c++
文章平均质量分 66
Zetaa
Email: officeforcsdn@163.com
展开
-
c++ 互斥锁必须使用在同一个线程当中 不能lock和 unlock两个操作分别在不同线程中
lock 和unlock必须在同一个线程中!!在子线程中上锁,在主线程中解锁,程序运行会 undefined behavior。例子1:子线程中上锁主线程中解锁#include <iostream>#include <chrono>#include <mutex>#include <thread>using namespace std;mutex mtx;void f(){ mtx.lock(); }int main(){原创 2020-12-23 14:21:50 · 1533 阅读 · 0 评论 -
c++多线程 唤醒notify_one/notify_all 必须发生在阻塞之前才是 有效唤醒
如果线程 t 还没在条件变量 cv 上阻塞,此时在条件变量 cv 上进行唤醒操作,该唤醒操作首先显然对线程 t 现在不会有影响,同时也不会对之后线程 t 在条件变量 cv 上阻塞有影响。效果图中程序不再继续执行,进入永久等待阻塞状态。(子线程等待被唤醒,主线程等待子线程执行结束)。测试代码#include <iostream>#include <thread>#include <condition_variable>#include <mutex&g原创 2020-12-23 10:16:56 · 2444 阅读 · 0 评论 -
C++线程一次创建 多次使用 避开循环场景中 线程多次创建销毁的开销
下面的代码中有三个填空部分,分别是:1)主线程在唤醒子线程之前的准备工作的代码,2)子线程干活具体内容的代码,3)主线程在一轮循环中子线程全部结束后(只是一轮)后的处理工作的代码。// 线程一次创建,多次使用#include <iostream> // std::cout#include <thread> // std::thread#include <mutex> // std::mutex,原创 2020-12-22 15:27:52 · 4517 阅读 · 4 评论 -
opencv读取视频并对视频进行自动截图保存形成简单摘要
前言:仅个人小记。对任意视频,固定时间间隔截图25张,这25张图可作为这个视频的简单摘要。看图片比看视频要方便得多,而且加速用户对视频的识别。思路获取视频总帧数 t,根据所需要的截图张数 k,求得截图间隔 step。视频从开头一直循环读取整个视频,在循环过程中,每个 step 帧,就进行一次截图。注意:因为这是视频文件而不是摄像头,故而需要判定视频是否结束,判定方法可以根据读到的帧是否为...原创 2019-08-30 08:48:30 · 1247 阅读 · 0 评论 -
opencv中使用摄像头录制视频
前言:仅个人小记。 以下只是两个基本操作,实现录制视频这个简单功能,在很多应用中,作为基础功能,简要记录。//建立一个C++控制台程序即可// opencvDemo.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。////#include "pch.h"#include <iostream>#include <string>#incl...原创 2019-06-20 22:02:37 · 3069 阅读 · 0 评论 -
C++二维数组离散动态和连续动态空间申请
声明:仅个人小记int m = 100,n = 300;double ** A = new double*[m];double * dataA = new double[m*n];// 保证了数据for (int i = 0; i < m; i ++) A[i] = dataA+i*l;delete []A;delete []dataA;...原创 2019-05-20 10:12:02 · 579 阅读 · 1 评论 -
C++虚函数机制
申明: 仅个人小记什么叫动态绑定(直到运行时才能知道到底调用了那个版本的虚函数)?举例:class A { public: virtual void g() {} };class B:public A { public: void g() {} };class C:public A { public: void g() {} };void f(A * p) { p-...原创 2018-04-02 17:30:40 · 1614 阅读 · 0 评论 -
互斥锁范围内抛出异常
声明: 仅个人小记情况:void f(){ mtx.lock(); throw -1; // 抛出异常,导致下面的unlock不能正常解锁 mtx.unlock(); }具体问题发生示例:#include <iostream>#include <mutex>using namespace std;mutex mtx;v...原创 2018-03-22 11:04:44 · 1412 阅读 · 0 评论 -
加法交换变量有问题
声明: 仅个人小记前言: 让你们嚣张,好好的交换非要弄什么加法来实现交换。今天帮同学查到了一个bug,罪魁祸首就是“加法实现交换”这种方法。哈哈,我找到这个方法的弊端了,我必须得记一下。一、加法交换#include <stdio.h>void f(int * a, int * b) { *a = *a + *b; *b = *a - *b; *a = *a - *b;原创 2017-09-20 22:22:14 · 297 阅读 · 0 评论 -
产生不重复的随机数
声明: 仅个人小记效果展示连续运行三次的结果代码部分#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 100/* 功能: 产生不重复的随机数 输入: a[] 一维数组, length 指定数组a的长度 输出: a 中为0~length的所有值随机乱序存放 思想:原创 2017-09-27 10:45:40 · 758 阅读 · 0 评论 -
为什么浮点数一定是有误差的
前提: 学习过信号处理,了解到在信号处理中,我们能够处理的都是数字信号,绝对不是模拟信号。数字信号是离散信号,模拟信号是连续信号。在这一思想基础下,思考了为什么会存在浮点数误差问题。为什么不讨论int整型会不会有误差而浮点数一定要考虑误差问题呢?就是因为,本质上我们面对int整型时候,想要处理的数据就是整数,而整数本身就是离散的数据,…… -2,-1,0,1,2 …… ,计算机提供就是完全正确的所有原创 2017-08-25 22:40:53 · 11682 阅读 · 0 评论 -
C++多线程图像分块处理示例
申明: 仅个人小记前言:大图像的处理,根据实际的操作,可以考虑通过多线程来加速图像的处理。本例中,通过一个简单的求图像的均值例子展现在C++中使用多线程来加速对图像的处理。基本思想:将一张图像分为四个部分(左上,左下,右上,右下)创建四个线程,分别计算被指定的部分的总和各个线程计算完毕,将部分和累加到一个外部的公共变量totalSum(注意这是对公共变量的写操作,需要加锁) 统计每个线程各自原创 2017-07-07 21:22:00 · 8780 阅读 · 11 评论 -
Opencv基本操作和配置小记
申明:仅个人笔记,主要来源自课程学习,后续还会补充 目录: 1. 基本操作 2. 环境配置一、基本操作/* 以下的程序是本人在初学阶段自己写的一些代码,一些对基本知识的注释还是相较全面的。 其中不乏一些有意思的代码比如借助投票器的思想,实现对几何图形的中心的检测*/#include <opencv2/core/core.hpp>// 基本的结构,架构和线性代数,原创 2017-05-22 22:59:43 · 500 阅读 · 0 评论 -
opencv中的矩阵操作整理
原文地址:http://blog.csdn.net/abcjennifer/article/details/7385917 有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持ROI,如果图像ROI被设置,那么只处理ROI部分 少部分函数支持COI,如果COI设置,只处理感兴趣的通道 矩阵逻辑运算转载 2017-06-23 08:13:17 · 740 阅读 · 0 评论 -
消息队列实现简单即时通信(纯属娱乐)
声明: 仅个人小记 前言: 进程间通信的方式之一,消息队列机制。消息队列就是存活在内核中(就是操作系统中)的由消息构成的链表。我们通过指定一个键值(键值由我们自己设定),键值可以映射成一个固定的消息队列描述符。进程之间,借助消息队列描述符实现通信。就是由内核作为中间人,负责消息的暂存。消息队列中的各个消息之间相互独立,添加消息或者读取消息都是按个数写入或者读取,不会发生一个消息只被读取原创 2016-10-12 22:56:47 · 3718 阅读 · 0 评论 -
C++俄罗斯方块方向键
刚刚我把方位键调好了,就是上下左右键的设置。之前不知道,上网翻阅,以为是要学习一些winAPI函数才能去使用方位键,其实不然。 方位键其实进一步了解控制键的键值就可以解决问题了。 方位键,属于控制键一类,因为需要,它们的设定和普通的字符有所不同。普通字符按下,就是一个字符产生,而控制键,产生的是两个连续的字符。就是说按一下控制键,就是发出两个字符,也就是说键盘缓冲区里有两个字节的数据处于等待中。原创 2016-04-27 21:02:49 · 4564 阅读 · 1 评论 -
C++制作俄罗斯方块 日志
刚刚我把方位键调好了,就是上下左右键的设置。之前不知道,上网翻阅,以为是要学习一些winAPI函数才能去使用方位键,其实不然。 方位键其实进一步了解控制键的键值就可以解决问题了。 方位键,属于控制键一类,因为需要,它们的设定和普通的字符有所不同。普通字符按下,就是一个字符产生,而控制键,产生的是两个连续的字符。就是说按一下控制键,就是发出两个字符,也就是说键盘缓冲区里有两个字节的数据处于等待中原创 2016-01-18 23:18:28 · 702 阅读 · 0 评论 -
派生类环境中基类对象不能访问自己的保护成员
在派生类环境中,基类对象 好像 不能访问 自己的 保护成员原创 2016-04-27 20:58:56 · 3998 阅读 · 1 评论