草庐IT

缓冲池

全部标签

c++ - 无缓冲 std streambuf 实现

为了对序列化库进行一些快速测试,我想创建一个可以读取/写入套接字的streambuf。我不想在streambuf中使用缓冲区,而是让套接字处理它。我确信序列化库只会调用std::istream::read和std::ostream::write。快速浏览一下Microsoft的basic_streambuf实现就会发现,这些调用实际上直接转发到xsputn和xsgetn。问题是:我能否从streambuf派生并仅实现xsputn和xsgetn,并确保使用我的实现的流将始终调用这些方法,而不是同步/溢出/下溢/pback/...?或者我应该覆盖同步等以返回错误,还是标准保证默认实现是好的

c++ - 在 boost::asio 程序中刷新缓冲区

基本上我正在使用boost套接字库编写一个简单的程序...我有两个程序,一个客户端和一个服务器。服务器等待来自客户端的连接,当它找到一个连接时,客户端向服务器发送一条消息,服务器打印出来,这在客户端第一次查询服务器时有效,但过了一会儿,一个奇怪的模式开始让我们说我们的服务器是运行,我通过执行两次使用了客户端程序:./clientlocalhostnamemessage./client本地主机名测试服务器的输出0f首先是:名称:消息然而接下来它会显示姓名:testage我不知道为什么会这样,但我知道这一定是服务器的问题,因为每个客户端都独立发送一个数据包,服务器只是打印出来...我认为这

c++ - 是否可以使用 C++ 流类来缓冲从管道读取的数据?

简而言之,是否可以按照此伪示例所描述的方式,从流类的管道中进行缓冲读取。请忽略你看到的任何迂腐的问题(比如不检查错误等);我在我的真实代码中做了所有这些,这只是一个伪示例来解决我的问题。#include//oristream,ifstream,strstream,etc;whateverstreamcouldpullthisoff#include#include#includevoidmyFunc(){intpipefd[2][2]={{0,0},{0,0}};pipe2(pipefd[0],O_NONBLOCK);pipe2(pipefd[1],O_NONBLOCK);if(0==f

c++ - 如何在 C++ 中从 Imagemagick 图像获取缓冲区

我正在使用ImageMagick库进行图像处理。我需要加载“bmp”图像,将其转换为jpeg,将其加载到缓冲区中并通过网络发送。但是,我无法在ImageMagick中找到任何可以在缓冲区中转换和存储数据的支持函数。我只能写入文件。尝试使用Magick::Blob但仍然没有用。以下代码用于加载、转换和写入文件:Magick::Imageimg("Sample.bmp");img.magick("jpeg");img.write("Output.jpeg");编辑:使用Magick::Blob作为:Magick::BlobmyBlob;img.write(&myBlob);constvoi

c++ - OpenGL 的缓冲区是如何工作的?

我不明白OpenGL的缓冲区是如何工作的。我通过OpenGL红皮书第8版学习OpenGL。例如,我有一个位置数组、一个颜色数组和一个索引数组:staticconstGLfloatstrip_position[]={-4.0f,0.0f,-1.0f,1.0f,//0-3.5f,-1.0f,-1.0f,1.0f,//1-3.0f,0.0f,-1.0f,1.0f,//2-2.5f,-1.0f,-1.0f,1.0f,//3-2.0f,0.0f,-1.0f,1.0f,//4-1.5f,-1.0f,-1.0f,1.0f,//5-1.0f,0.0f,-1.0f,1.0f,//6-0.5f,-1.0f

c++ - WSARecv() 和多个缓冲区

我想要WSARecv的精度。基本上,您似乎可以将函数与WSABUF数组一起使用。1-在重叠的I/O上下文中WITHOUT完成端口,假设我在具有48个WSABUF数组的数据报套接字上使用WSARecv(),这是否意味着我可以接收48个不同的UDP数据包(每个缓冲区1个数据包)在一次调用中(假设它们在同一时刻到达)?或者接收48个数据包的唯一方法是在事件发出信号后使用WSARecv()48次(使用重叠I/O与事件而不是完成端口,我重复一遍)。2-在WITHI/O完成端口/重叠I/O的上下文中,这是否意味着我可以替换它intn=48;for(inti=0;i用这个?WSARecv(sock,

c++ - 不通过文件系统将 uint8_t* 缓冲区上传到 AWS S3

免责声明:我不是C++程序员,请救救我吧。我正在尝试使用AWS开发工具包在C++中创建PutObjectRequest。我有一个“uint8_t*”(在Java领域,我调用它为byte[],我相信在c++星球上这是一个缓冲区),我需要将它放入Aws::IOStream不知何故。所有示例都显示了直接来自文件系统的数据。我见过几个类似(但不是真的)的问题,其答案指向另一个名为Boost的第三方库,但肯定这是一个常见的用例?为什么我需要第三方库来做一些使用AWS开发工具包应该可以做到的事情?:“我有数据,我想把它放在S3上。不,它不在文件系统中,是的,我在内存中创建了它。”uint8_t*b

c++ - 如何刷新 Windows 中的所有文件缓冲区?

在Windows中有FlushFileBuffers()API可以为单个文件刷新缓冲区到硬盘驱动器。Linux中有sync()API可以刷新所有文件的文件缓冲区。但是,是否也有用于刷新所有文件的WinAPI,即sync()模拟? 最佳答案 https://learn.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-flushfilebuffers可以刷新整个硬盘驱动器。Toflushallopenfilesonavolume,callFlushFileBuffer

c++ - 使用 FFMPEG 编码 H264 时如何转储缓冲区?

我正在使用C++库将从网络摄像头捕获的图像写入libx264编码的mp4文件。编码工作正常,但当它开始时,它会向缓冲区写入40帧。当我关闭文件时,这些帧不会刷新,因此大约有6秒的视频未写入(cam约为6fps)。所以我调用:out_size=libffmpeg::avcodec_encode_video(codecContext,data->VideoOutputBuffer,data->VideoOutputBufferSize,data->VideoFrame);//ifzerosize,itmeanstheimagewasbufferedif(out_size>0){//...w

c++ - 最大缓冲区数

我可以使用glGenBuffers函数生成多少个缓冲区?我可以尝试生成8192个(或更多)缓冲区吗?我只渲染一个缓冲区,但我需要存储许多缓冲区。inti=0;glGetIntegerv(GL_MAX_DRAW_BUFFERS,&i);返回8。这是缓冲区的最大数量,同时渲染。我说得对吗? 最佳答案 GL_MAX_DRAW_BUFFERS值与glGenBuffers无关,但对于片段着色器可以写入的缓冲区(参见glDrawBuffers)。标准中对buffer的数量没有限制,你想创建多少就创建多少。然而,你受到内存的限制,所以如果你打算存