如何阻止读取 C++ stringstream 以等待数据

2024-01-09

因此,我一直试图弄清楚如何等待来自 C++ stringstream 的数据(例如),而不需要不断检查数据是否存在,这非常消耗 CPU。

例如,我完全能够从串行设备读取数据,并在没有数据到达时锁定进程,但不幸的是我无法弄清楚如何使用 C++ 流来做到这一点。

我确信我错过了一些东西,因为 cin 正是这样做的,即等待返回键从 istream 读取中退出,但它是如何做到的呢?

预先感谢您对这个主题的任何了解。


流从以下位置获取数据std::streambuf。对于以下情况std::cin它调用系统的read()函数(或等效函数)会阻塞,直到数据从操作系统移交为止。控制台通常发送完整的行。字符串流没有获取新数据的概念,即,当到达当前数据的末尾时,它们会失败。没有阻塞的概念。

您没有完全说出您在做什么,但从它的声音来看,尝试在两个线程之间通信数据:一个读取并可能阻塞直到数据可用,另一个填充更多数据。您可以非常轻松地创建相应的流缓冲区:std::streambuf::underflow() would wait()如果没有数据,则在条件变量上。std::streambuf::overflow()将适当地设置缓冲区并发出条件变量信号。显然,需要进行一些同步。不过,大多数读取和写入都没有进行任何同步。这实际上意味着您将需要两个单独的缓冲区用于输入和输出,并且需要将数据复制到std::streambuf::underflow().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何阻止读取 C++ stringstream 以等待数据 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • 如何使用 NHibernate 将 SQL 调用记录到 Visual Studio 的控制台?

    我有以下配置文件NHibernate http en wikipedia org wiki NHibernate
  • hibernate 返回 BigDecimal 数据类型而不是 long

    hibernate 命名查询为数据类型为 NUMBER 的列返回 BigDecimal select col1 as col1 from table1 union select col2 as col1 from table2 在客户端 我
  • 删除 MS SQL Server 中的列

    如何从现有表中删除列 您正在寻找的命令是 alter table tblName drop column columnName where tblName是表的名称 并且columnName是列的名称 但您可能需要首先执行一些操作 如果该列
  • 使用 REST DocuSign API 从模板获取所有选项卡

    我想知道使用 REST API 从模板获取所有选项卡的最佳方法是什么 我当前正在尝试做的是获取所有收件人及其所有选项卡 以便我们可以默认某些值以及在创建信封时锁定已填充值的字段 为了获取收件人 我使用 envelopes templateI
  • 包含子目录中的 twig 文件

    我遇到了一个问题 当将一个树枝文件放置在子目录中时 我无法将另一个树枝文件包含在其中 例子 我有一个文件AppUserBundle Dashboard index html twig symfony路径是src App UserBundle
  • 带有嵌入视频的 WebView 在后台播放

    我有一个托管嵌入式视频的 WebView 当我降级 Webview 时 视频的声音会继续播放 我怎样才能阻止这个 我确实尝试过webview destroy 但是当我尝试再次打开 WebView 时 该力量会关闭应用程序 您必须调用 Web
  • swift中前缀头的引用类定义

    我正在将 swift 代码添加到现有的 Objective C 项目中 我在引用现有前缀标头中的定义时遇到问题 我有一个名为 MyClass 的类 在 Objective C 中用 h 定义 interface MyClass instan
  • 动态添加子视图时,TableLayout(TableRow?)未按预期调整子视图的大小

    Context 我有一个 TableLayout 使用 XML 创建 其中有一个 TableRow 其中有一个 TextView 代码
  • 如何在 Android(和 iOS)上查看 JavaScript 控制台?

    我正在创建一个纯粹基于浏览器的应用程序 HTML 和 JavaScript 我没有安装 Android IDE 也没有安装适用于 iOS 的 IDE 并且不想安装 IDE 并执行远程调试 在我的 PC 上进行开发时 我使用 Chrome 浏
  • 如何保存 git“rebase 正在进行中”?

    我正处于一个大型的 正在进行的重新调整 之中 有很多冲突 我想搁置这一进展并尝试使用另一种方法来解决此问题 有什么办法可以拯救进行中变基以便我稍后可以完成它 如果您在变基过程中遇到冲突的合并 那么您就会陷入困境 以下是您的原因 方式和内容c
  • (<*>) 中的 * 有特殊含义吗?

    试图扩展我对 Haskell 中符号的理解 函数应用运算符 允许您在函数上应用参数 函数应用运算符的翻转版本 flip lt gt 结合运算符 您可以在半群和幺半群中找到它 lt gt 功能应用 提升到 Functor 结构上 lt gt
  • 如何从图像中剪切并保存矩形?

    如何剪切图像并将其保存为另一图像 If src is a BufferedImage 然后你可以切割矩形 x1 y1 x2 y2 从它写到dst png像这样 final BufferedImage dst new BufferedImag
  • Groovy 脚本无法从 Jenkins DSL 作业调用 Slack 通知参数

    我第一次尝试使用 Jenkins Job DSL 插件来创建一些基本的作业 模板 然后再进入更复杂的内容 Jenkins 在 Windows 2012 服务器上运行 Jenkins 版本是 1 650 我们使用的是 Job DSL 插件版本
  • requests.get 返回 403,而相同的 url 在浏览器中有效

    我正在尝试使用搜索表单俄罗斯网 http www rlsnet ru 这是我从源文件中提取的表单定义
  • 所有 Haskell 函子都是内函子吗?

    我有点困惑 需要有人来纠正我 让我们概述一下我目前的理解 Where E是一个内函子 并且A是某个类别 E A gt A 由于 Haskell 中的所有类型和态射都在Hask类别 不是任何functor在 Haskell 中还有一个内函子
  • Android jetpack 编写没有 xml 的片段

    晚安 我使用drawerContent和navigationIcon来创建菜单 但是我可以创建一个没有xml的Fragment 吗 在撰写喷气背包中 如果有人有任何参考资料 我将不胜感激 使用 Compose 您可以尝试不同的东西 您可以使
  • 使用 AppFabric 缓存在 MVC SessionState 中使用 WCF DataContract

    我有一个数据访问层 一个服务层和一个表示层 表示层是 ASP NET MVC2 RTM Web 服务层是 WCF 服务 都是 NET 3 5 SP1 问题是在服务中 返回的对象被标记为 DataContract 属性 Web 使用 AppF
  • 如何使用OpenGL和QT?

    我正在开发一个小项目 我需要使用 OpenGL QT 我在这两个方面都是新手 所以我需要一个很好的教程来说明如何彼此合作而不是单独合作 在 QT Creator 上运行 OpenGL 还是使用 QT Visual Studio Plug i
  • ScrollView 重叠工具栏

    我尝试使用 ScrollView 和 Toolbar 作为 LinearLayout 的唯一子级 但它们彼此重叠 搜索了一下 但没有找到任何有用的东西 知道如 何解决这个问题而不是给 ScrollView 提供填充 边距吗
  • 如何阻止读取 C++ stringstream 以等待数据

    因此 我一直试图弄清楚如何等待来自 C stringstream 的数据 例如 而不需要不断检查数据是否存在 这非常消耗 CPU 例如 我完全能够从串行设备读取数据 并在没有数据到达时锁定进程 但不幸的是我无法弄清楚如何使用 C 流来做到这