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

相关文章

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

C#使用MQTTnet实现服务端与客户端的通讯的示例

《C#使用MQTTnet实现服务端与客户端的通讯的示例》本文主要介绍了C#使用MQTTnet实现服务端与客户端的通讯的示例,包括协议特性、连接管理、QoS机制和安全策略,具有一定的参考价值,感兴趣的可... 目录一、MQTT 协议简介二、MQTT 协议核心特性三、MQTTNET 库的核心功能四、服务端(BR

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

Java 压缩包解压实现代码

《Java压缩包解压实现代码》Java标准库(JavaSE)提供了对ZIP格式的原生支持,通过java.util.zip包中的类来实现压缩和解压功能,本文将重点介绍如何使用Java来解压ZIP或RA... 目录一、解压压缩包1.zip解压代码实现:2.rar解压代码实现:3.调用解压方法:二、注意事项三、总