如何阻止读取 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 以等待数据 的相关文章

  • 如何从对Web服务发出的请求中获取客户端IP地址

    我的 IIS 中托管有一个 Web 服务 当客户端直接使用我的服务时 我需要找出客户端 IP 地址 like http MyIpAddress MyApplication MyWebServiceClass asmx http MyIpAd
  • ASP.NET 如何在 Web API 中读取多部分表单数据?

    我将多部分表单数据发送到我的 Web API 如下所示 string example my string HttpContent stringContent new StringContent example HttpContent fil
  • C# 中输入按键

    我尝试了这段代码 private void textBox1 KeyPress object sender KeyPressEventArgs e if Convert ToInt32 e KeyChar 13 MessageBox Sho
  • 弹出 x86 堆栈以访问函数 arg 时出现分段错误

    我正在尝试链接 x86 程序集和 C 我的C程序 extern int plus 10 int include
  • 在 T4 代码生成中,如何从引用的程序集中获取类型?

    由于 T4 在项目上下文之外运行 因此我无权访问当前程序集或其他程序集 如何注册对引用程序集的访问 然后从中获取类型 我猜您想访问项目中建筑物的程序集 我在下面的示例代码中所做的是将一个名为 TestLib 的项目添加到我的解决方案中 我将
  • C 中的双重否定:是否保证返回 0/1?

    Is x 标准保证返回0 1 请注意 我是not询问 C 其中定义了 bool 类型 是的 在 C99 中 请参阅 6 5 3 3 4 逻辑非运算符的结果 是0如果其操作数的值比较 不等于0 1如果其操作数的值比较等于 0 结果具有类型in
  • 使用正则表达式解析日志文件

    我目前正在为我们的内部日志文件 由 log4php log4net 和 log4j 生成 开发一个解析器 到目前为止 我有一个很好的正则表达式来解析日志 除了一个烦人的一点 一些日志消息跨越多行 我无法正确匹配 我现在的正则表达式是这样的
  • 如何在 C# 中创建 PKCS12 .p12 文件?

    这可能是一个n00b问题 但我在这方面确实没有任何经验 我需要创建一个包含 X509 证书和私钥的 p12 捆绑包 我当前有两个对象 X509Certificate2 和包含关键信息的 RSAParameters 对象 如何将它们合并到 p
  • 我如何模拟 UserManager 和 RoleManager 进行单元测试

    我模拟了抽象类来测试类的具体方法 如下所示 var mock new Mock
  • 指向 VLA 的指针

    你可能知道 VLA 的优点和缺点 https stackoverflow com a 3082302 1606345在 C11 中它们是可选的 我认为使 VLA 成为可选的主要原因是 堆栈可能会爆炸 int arr n where n 10
  • Bazel:将编译标志添加到默认 C++ 工具链

    我想向默认的 C 工具链添加一些编译器和链接器标志 以便我构建的所有目标 本地或导入 共享它们 我知道可以定义我自己的工具链 但我不想这样做 因为它非常复杂且容易出错 理想情况下我想要这样的东西 cc toolchain cc defaul
  • VS C# 中的依赖地狱,找不到依赖项

    我创建了一个图表 C 库 我们称之为chartlibrary 它本身依赖于多个第三方 dll 文件 在另一个可执行项目中 我们称之为chartuser 我参考了chartlibrary项目 两个项目位于 Visual Studio 中的同一
  • 多个包含带有变量定义的头文件

    我只是构建一个简单的 C 项目 代码如下所示 head h ifndef HEAD H define HEAD H int my var 100 endif src1 cpp include head h src2 cpp include
  • 什么是 C++11 扩展 [-Wc++11-extensions]

    我需要一些帮助来了解此错误发生的位置 警告 非静态数据成员的类内初始化是 C 11 扩展 Wc 11 extensions 这是它来自的代码部分 typedef struct Hand bool straight false bool fl
  • 为什么将未使用的返回值转换为 void?

    int fn void whatever void fn 是否有任何理由将未使用的返回值强制转换为 void 或者我认为这完全是浪费时间 David s answer https stackoverflow com questions 68
  • 来自用户定义文字的整数字符序列,以字符串作为参数

    目前 只有双精度数可以在用户定义的文字中生成字符模板 template
  • OpenCV 仅围绕大轮廓绘制矩形?

    第一次发帖 希望我以正确的方式放置代码 我正在尝试检测和计算视频中的车辆 因此 如果您查看下面的代码 我会在阈值处理和膨胀后找到图像的轮廓 然后我使用 drawContours 和矩形在检测到的轮廓周围绘制一个框 我试图在 drawCont
  • 如何在c#中获取斐波那契数

    伙计们 我有一个关于斐波那契的问题 如何获得斐波那契数列 该数字也将以用户输入结束 例如 如果我输入 21 则输出必须为 0 1 1 2 3 5 8 13 21 这是我的代码 static void Main string args int
  • 使用 List.Contains 方法为 LINQ 构建表达式树

    Problem 我正在重构一些LINQ查询我们的 Web 应用程序中的多个报告 并且我尝试将一些重复的查询谓词移至它们自己的中IQueryable扩展方法 以便我们可以将它们重新用于这些报告以及将来的报告 正如您可能推断的那样 我已经重构了
  • 在地图上使用 find

    如何使用 find 和 aconst iterator如果你有一个地图定义为 typedef std pair

随机推荐

  • 如何使用 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 流来做到这