Misra C++编程 0 warning示例代码

2024-05-13 10:28

本文主要是介绍Misra C++编程 0 warning示例代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以下代码通过Polyspace使用Misra C++ 2008规则扫描后是0 warning。

如下有两个线程,一个订阅线程,另一个为发送线程

/***  Copyright (C) 2023 - Fake Inc.**  All Rights Reserved.*  thread_sub_pub.cpp*/
#include <condition_variable>
#include <iostream>
#include <mutex>
#include <queue>
#include <thread>namespace Fake {class DataBuffer {public:void push_data(int32_t p_data) noexcept {const std::lock_guard<std::mutex> lck_mux{mut_data_};data_queue_.push(p_data);data_available_.notify_one();}int32_t pop_data() noexcept {std::unique_lock<std::mutex> lck_mux{mut_data_};data_available_.wait(lck_mux, [&] { return !data_queue_.empty(); });int32_t front_data{0};front_data = data_queue_.front();data_queue_.pop();return front_data;}private:std::queue<int32_t> data_queue_;std::mutex mut_data_;std::condition_variable data_available_;
};static void process_producer_s(DataBuffer& buf_out) noexcept {int32_t proidx{0};for (; proidx < 10; ++proidx) {buf_out.push_data(proidx);std::this_thread::sleep_for(std::chrono::milliseconds(100));}
}static void process_consumer_s(DataBuffer& buf_in) noexcept {int32_t conidx{0};for (; conidx < 10; ++conidx) {int32_t p_data{0};p_data = buf_in.pop_data();std::cout << "Consumer received: " << p_data << std::endl;}
}}  // namespace Fakeint32_t main() {int32_t main_res{0};try {Fake::DataBuffer buf_in;std::thread producer{Fake::process_producer_s, std::ref(buf_in)};std::thread consumer{Fake::process_consumer_s, std::ref(buf_in)};producer.join();consumer.join();main_res = 0;} catch (...) {std::cerr << "Exception occurred" << std::endl;main_res = 1;  // Exception occurred}return main_res;
}

这篇关于Misra C++编程 0 warning示例代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985444

相关文章

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

MySQL CTE (Common Table Expressions)示例全解析

《MySQLCTE(CommonTableExpressions)示例全解析》MySQL8.0引入CTE,支持递归查询,可创建临时命名结果集,提升复杂查询的可读性与维护性,适用于层次结构数据处... 目录基本语法CTE 主要特点非递归 CTE简单 CTE 示例多 CTE 示例递归 CTE基本递归 CTE 结