草庐IT

read_async

全部标签

c++ - std::async - 依赖于实现的用法?

我一直在考虑std::async以及如何在未来的编译器实现中使用它。然而,现在我有点被一些感觉像是设计缺陷的东西所困扰。std::async非常依赖于实现,可能有launch::async的两个变体,一种将任务启动到新线程中,另一种使用线程池/任务调度程序。但是,这取决于用于实现std::async的变体中的哪一种,用法会有很大差异。对于基于“线程池”的变体,您可以启动许多小任务而不必担心开销,但是,如果其中一个任务在某个时候阻塞怎么办?另一方面,“启动新线程”变体不会遇到阻塞任务的问题,另一方面,启动和执行任务的开销会非常高。线程池:+低开销,-从不阻塞启动新线程:+finewith

C++ boost asio Windows 文件句柄 a​​sync_read_until 无限循环 - 没有 eof

我在VS2010中使用boost1.50,使用Windows文件HANDLE进行读取(与使用套接字的asio相比,这似乎相对不常见)。问题Thehandle_readcallbackgetstoline8andreturnsthefirstbitwithallofline1appended;furthercallbackscyclethroughfromline2again,adnauseum:打开一个简短的文本文件(如下)获得预期的handle_read回调,第1行到第7行内容正确下一个回调有一个比预期更长的字节读取length参数虽然不使用length,但getline会从asio

c++ - read_some/write_some 和接收/发送之间的区别?

我开始使用BoostAsio的TCP套接字。read_some和有什么区别和receive和write_some有什么区别?和send?谢谢! 最佳答案 据我所知,read_some和receive实际上是在做同样的事情。我认为只接收调用read_some或反之亦然。一个命名来自将套接字视为文件(读/写)的想法,而另一个命名来自连接(发送/接收)点看法。write_some和send也应该如此。 关于c++-read_some/write_some和接收/发送之间的区别?,我们在Stac

c++ - 为什么使用 std::async 时通过 const ref 传递速度较慢

作为学习std::async的练习我写了一个小程序,计算大vector的总和,分布了很多线程。我的代码如下#include#include#include#includetypedefunsignedlonglongintmyint;//CalculatesumofpartoftheelementsinavectormyintpartialSum(conststd::vector&v,intstart,intend){myintsum(0);for(inti=start;iv(vectorSize);std::vector>partial(nThreads);myinttot=0;//

C++命名: read_input() vs. readInput()

在C++中哪种命名约定更可取?underscore方法还是camelCase方法?我已经用Java编码了一段时间,并且习惯了camelCase命名约定。哪一种比较流行?另外,在定义一个类时,私有(private)/公共(public)/protected变量/方法是否有任何优先顺序?friend一般都放在最后吗?那么typedef呢,它们是否位于类定义的顶部? 最佳答案 我更喜欢走boost路线,匹配标准库。这意味着lower_case_names。我喜欢我的代码读取与STL一致。 关于

c++ - asio::read with timeout

我需要知道如何在超时时读取(同步或异步无关紧要)。我想检查设备是否与串行端口连接。为此,我使用asio::write然后等待设备的响应。如果连接了设备asio::read(serial,boost::asio::buffer(&r,1))工作正常,但如果没有设备,程序将停止,即为什么我需要超时我知道我需要一个deadline_timer但我不知道如何在async_read函数中使用它。举例说明它的工作原理会很有帮助。我知道有很多类似的主题,我阅读了很多,但我找不到可以帮助我解决问题的解决方案! 最佳答案 codepostedbyIg

c++ - 为什么 std::async 复制它的 const & 参数?

我正在尝试通过使用std::async来加速程序。假设我有一个函数T*f(constT&t1,constT&t2,constT&t3)其中T是一种复制成本很高的类型。我有几个具有不同参数的独立f调用,我尝试将它们与std::async并行化,大致如下:(其中m_futures是正确类型的future的std::vector)。for(...){m_futures.push_back(std::async(std::launch::async,f,a,b,c));}我观察到上面的代码减慢了我的程序的执行速度。我用gdb逐步完成了它,当创建future时,T的复制构造函数被调用了3次。这是

c++ - ASCII数据导入: how can I match Fortran's bulk read performance in C++?

设置您好,我有用于读取ASCIIdouble数据的Fortran代码(问题底部的数据文件示例):programReadDatainteger::mx,my,mzdoubleprecision,allocatable,dimension(:,:,:)::charge!Openthefile'CHGCAR'open(11,file='CHGCAR',status='old')!Gettheextentofthe3Dsystemandallocatethe3Darrayread(11,*)mx,my,mzallocate(charge(mx,my,mz))!Bulkreadtheentire

c++ - 为什么 std::async 比简单的分离线程慢?

我已经多次被告知,我应该使用std::async来执行带有std::launch::async参数的任务类型(所以它在一个新的执行线程上是很神奇的)。在这些陈述的鼓舞下,我想看看std::async与:顺序执行一个简单的分离std::thread我的简单异步“实现”我天真的异步实现如下所示:templateautomyAsync(F&&f,Args&&...args)->std::future{std::packaged_tasktask(std::bind(std::forward(f),std::forward(args)...));autofuture=task.get_futu

c# - C# 中的 C++ std::async 与异步/等待

我想知道新的c++特性std::async是否与两个C#关键字async/await相当,如果不是,为什么? 最佳答案 不是真的,假设我正在阅读thisstd::asyncdocumentation正确。C#5的async/await特性涉及异步方法的复杂编译器转换,因此您可以编写看起来非常同步但具有异步点的代码。编译器为您构建状态机,创建适当的回调等。编辑:虽然我之前认为std::async只是强制你显式地传入一个回调,但它看起来比这更原始。无论哪种方式,我相信它主要/完全是library功能,而C#5的异步方法主要是具有库支持的