草庐IT

volatile-ttl

全部标签

C++:std::atomic<bool> 和 volatile bool

我正在阅读AnthonyWilliams的C++concurrencyinactionbook。这个经典的例子有两个线程,一个产生数据,另一个消耗数据,A.W.这段代码写得很清楚:std::vectordata;std::atomicdata_ready(false);voidreader_thread(){while(!data_ready.load()){std::this_thread::sleep(std::milliseconds(1));}std::cout而且我真的不明白为什么这段代码与我使用经典的volatilebool而不是原子的不同。如果有人能在这个问题上打开我的思

c++ - std::is_trivially_copyable - 为什么 volatile 标量类型不能轻易复制?

C++17的当前标准(我观察到C++11的类似措辞)对于可复制的类型的措辞非常困惑。我首先通过以下代码(GCC5.3.0)偶然发现了这个问题:classTrivialClass{};std::is_trivially_copyable::value;//0std::is_trivially_copyable::value;//1??让困惑变得更糟,我试图查看std::is_trivial对此事的看法,但结果更加困惑。classTrivialClass{};std::is_trivial::value;//1??std::is_trivial::value;//1很困惑,我检查了最新的C

C++ - volatile应用于方法时代表什么?

如果我有如下C++方法声明:classA{public:doublegetPrice()volatile;};volatile在这里代表什么?它可以用来做什么?您可能对this感兴趣AndreiAlexandrescu的Dobbs博士文章。我是:)编辑:那篇文章是不久前写的,现在看来社区已经继续前进了。HerbSutter有话要说this.谢谢伊恩(和赫伯!)mlimber指出Andrei有一篇后续文章here他继续提倡使用volatile正确性作为检测支持类似POSIX互斥体的系统上的竞争条件的宝贵工具。 最佳答案 您可能熟悉co

c++ - 为什么这个 volatile 变量的地址总是为 1?

我想检查我的变量的地址volatileintclock;cout但它总是说x在地址1。我做错了什么吗?? 最佳答案 iostreams会将大多数指针转换为void*以供显示-但volatile指针不存在转换。因此,C++回退到对bool的隐式强制转换。如果要打印地址,请显式转换为void*:std::cout 关于c++-为什么这个volatile变量的地址总是为1?,我们在StackOverflow上找到一个类似的问题: https://stackoverf

c++ - c++中void* volatile*是什么意思

我正在查看以下代码:inlinevoid*interlocked_read_acquire(void*volatile*x);我想知道为什么不只是一个volatilevoid*作为参数。一般而言,volatile*的语义或定义是什么?我还假设您可以将volatile*限定符与除void之外的任何其他类型一起使用。对吗? 最佳答案 使用cdecl或clockwisespiralrule破译C风格的声明:void*volatile*x将x声明为指向void的volatile指针不同于:volatilevoid*x将x声明为指向volat

c++ - C:C 中的 volatile 数组

volatile关键字在C中用于防止编译器对变量执行某些优化,以及其他细微的更改。例如;volatileintmy_int=0;创建一个整数。在某些情况下,它可能会阻止以下优化:while(my_int==0);//Loopuntilmy_int!=0优化到:while(1);//Loopinfinity.这对于包括嵌入式系统中经常遇到的情况很有用,例如可能通过中断函数调用对变量进行修改的情况。还有许多其他例子说明这种技术是有用的。my_int可以是一个被这样的函数修改的标志。(这只是一个玩具模型。)但是,考虑函数修改的数据是数组的情况。数据可以由指针指向。unsignedchar*m

c++ - 为什么 'volatile' 寄生在 C++ 中?

考虑以下代码:intmain(){inti;volatileint*p=&i;int*v=p;return0;}这会在g++中产生错误:$g++-ovolatilevolatile.cppvolatile.cpp:Infunction‘intmain()’:volatile.cpp:6:error:invalidconversionfrom‘volatileint*’to‘int*’我的意图是让p易变。但是,一旦我读取了p的值,我就不关心访问v是否是volatile的。为什么需要将v声明为volatile?这当然是假设的代码。在实际情况中,您可以想象p指向一个内存位置,但在外部进行了修

mongodb - 在 mongo 中创建条件 TTL

我想要完成一项特定的任务,但我没有找到任何特定的方法来做到这一点。假设我有一个用于发送邮件的应用程序。我将这些电子邮件记录在mongo的集合中。使用这个应用程序,我可以立即发送邮件,也可以安排将来的电子邮件。集合中文档的结构如下:{'_id':123456789,'to_email':'xyz@gmail.com''from_email':'abc@gmail.com''subject':'somesubject''type':'','createdDate''','scheduledDate':''..andmanymorekey-valuepairs}scheduledDate字段

mongodb - 在 mongo 中创建条件 TTL

我想要完成一项特定的任务,但我没有找到任何特定的方法来做到这一点。假设我有一个用于发送邮件的应用程序。我将这些电子邮件记录在mongo的集合中。使用这个应用程序,我可以立即发送邮件,也可以安排将来的电子邮件。集合中文档的结构如下:{'_id':123456789,'to_email':'xyz@gmail.com''from_email':'abc@gmail.com''subject':'somesubject''type':'','createdDate''','scheduledDate':''..andmanymorekey-valuepairs}scheduledDate字段

node.js - 任何人都可以向我解释 socket.io/nodejs 中的 "volatile"消息吗?

在新的socket.iov0.7中,有一个新功能“volatile消息”。在“如何使用”中,他们这样写:(在http://socket.io/#how-to-use)Sendingvolatilemessages.Sometimescertainmessagescanbedropped.Let'ssayyouhaveanappthatshowsrealtime>tweetsforthekeywordbieber.Ifacertainclientisnotreadytoreceivemessages(becauseofnetworkslownessorother>issues,orbec