草庐IT

async_write

全部标签

c++ - std::async 使用同一个线程,我的代码没有实现并行。

我在MacOSXcode4.3.2上使用C++11std::async使用同一个线程,我的代码没有实现并行。在下面的示例代码中,我想创建10个新线程。在每个线程中,我想计算输入变量的平方根并将结果设置为promise。在main函数中,我想显示从线程计算的结果。我正在使用策略launch::async调用std::async,所以我希望它创建一个新线程(10次)。#include#include#include#include#include#includeusingnamespacestd;mutexiomutex;voidfoo(inti,promise&&prms){this_t

c++ - std::ofstream::write 添加字符

我正在尝试使用std::ofstream::write方法编写二进制文件。我发现,有些字符不是按原样写的,例如:std::ofstreamin("testout");inti=10;in.write((constchar*)(&i),sizeof(i));in.close();return0;将以下内容写入二进制文件:0d0a000000为什么会出现额外的0d字节? 最佳答案 您必须在打开时指定std::ofstream::binary。否则,在文本文件模式的Windows上,程序中的\n(0x0a)将转换为/自\r\n(0x0d0

c++ - QTcpSocket : reading and writing

我知道可能已经有人问过一些类似的问题,但我发现的这些问题的答案涵盖了非常具体的问题,我仍然没有弄清楚。在我的程序中,我正在创建一个QObject(称为QPeer),它使用QTcpSocket通过网络与另一个此类对象进行通信。QPeer有一个插槽,可以接受带有数据的QByteArray(sendData(QByteArray))。该数组的全部内容被视为一条“消息”,并将它们写入套接字。我想执行以下操作:每次写入消息时,我都希望接收QPeer恰好发出一次信号dataReceived(QByteArray),该QByteArray包含整个消息。(注意:所有信号/槽,包括连接QPeer及其套接

c++ - boost 等效于 std::async()

如果不直接使用boost::thread和boost::bind,有没有办法实现以下代码的等价物?std::stringfunc(){std::stringstr("Hellofromasynctask!");returnstr;}intmain(){autoftr=std::async(&func);std::cout具体来说,这部分:autoftr=std::async(&func);? 最佳答案 当然。只需制作async(std::function)返回调用func()的future第一次等待的那一刻。您不会获得任何异步性,但

c++ - HDF5 C++ 接口(interface) : writing dynamic 2D arrays

我正在使用HDF5C++API编写二维数组数据集文件。HDF集团有anexampletocreate来自静态定义数组大小的HDF5文件,我已对其进行修改以满足下面的需求。但是,我需要一个动态数组,其中NX和NY都是在运行时确定的。我找到了anothersolutiontocreate2Darraysusingthe"new"keyword帮助创建一个动态数组。这是我所拥有的:#include"StdAfx.h"#include"H5Cpp.h"usingnamespaceH5;constH5std_stringFILE_NAME("C:\\SDS.h5");constH5std_str

c++ - GCC 对 std::async(std::launch::async) 的行为与 Clang 的行为

有没有人有使用相当新的std::async的经验?我们目前正在实现一个并行文件解析器,它读取一个文件block并将该block传递给一个异步函数。以这种方式使用Clang(v3.0)与默认的std::async策略(依赖于实现)一起工作得很好。在双核机器上,它最多可触发4个线程,效果非常好。但是对于GCC(v4.7),文件读取线程不会产生任何新线程,从而使程序最终完全按顺序执行。使用std::launch::async,两个版本几乎都在做同样的事情(应该是这样)。有谁知道GCC的c++11线程功能的当前状态?或者这可能是我们实现中的错误?短代码:while(readNewChunk()

c++ - boost::asio 中 async_read() 中的 EOF

当async_read_some()返回EOF异常时,是服务器停止发送数据还是连接已关闭。我有这种困惑,因为我找不到一种方法来知道客户端是否已从服务器接收到所有数据。 最佳答案 表示连接已经关闭。虽然记录了elswhere它仍然适用:Anerrorcodeofboost::asio::error::eofindicatesthattheconnectionwasclosedbythepeer.如果客户端需要知道已经从服务器接收到所有数据,那么可以考虑在通信协议(protocol)中支持分帧。Boost.Asio提供更高级别的操作来帮

c++11 std::async 在 mingw 中不起作用

从HerbSutter的presentation运行这段代码.这在gcc4.6.3下的linux中工作正常。我在想mingw不支持future.h,但是这个错误真的很难理解!#include#include#include#include#includeusingnamespacestd;stringflip(strings){reverse(begin(s),end(s));returns;}intmain(){vector>v;v.push_back(async([]{returnflip(",olleH");}));v.push_back(async([]{returnflip(

c++ - 用自己的版本替换 std::async 但 std::promise 应该住在哪里?

我使用的是vc2011,结果发现std::async(std::launch::async,...)有点问题(有时它不会生成新线程并并行运行它们,而是重用线程并一个接一个地运行任务)。当我进行昂贵的网络调用时,这太慢了。所以我想我会编写自己的异步函数。我被卡住了,std::promise应该放在哪里?在1)线程函数、2)异步函数或3)调用函数中。代码:#include#include#include#include#includestd::stringthFun(){throwstd::exception("bang!");return"val";}std::futuremyasync

c++ - libpng 在 png_write_into 上崩溃(Windows 10,VS2013,自建,所有测试通过 ok)

当调用png_write_info时,我观察到由于libpng(1.6.20)中的访问冲突导致的崩溃。我已经从源代码(包括zlib1.2.8)构建了libpng,并且libpng源代码附带的png测试全部通过,没有任何错误。我可以确认在这些测试期间正在创建良好的png文件。我的程序的简单分解(直到崩溃)如下所示。出于简单原因,我删除了所有错误和边界检查:intmain(intargc,char*argv[]){char*filename=argv[1];png_structppng=png_create_write_struct(PNG_LIBPNG_VER_STRING,NULL,N