草庐IT

上下册

全部标签

c++ - 在多线程上下文中正确处理 GetLastError(和其他)

假设GetLastError(和变体)是每线程还是每进程是否正确?如果它是每个进程的问题在多线程应用程序中有些明显,因为无法保证在失败的调用和GetLastError之间没有进行其他Win32调用。有时GetLastError的值很重要。例如,如果您正在使用IO完成端口,AcceptEx将返回FALSE(失败)。WSAGetLastError(类似于GetLastError)将返回ERROR_IO_PENDING以通知您它已挂起并且失败不是由于其他原因。问题是许多其他调用可能正在运行并覆盖此值。这些调用是线程特定的还是进程特定的?如果特定于流程,那么您如何正确处理?

c++ - 在用 C\C++ 编写的代码上下文中的乱序执行与有序执行

谁能给我解释一下(用简单的英语)乱序执行与有序执行?我正在阅读一些关于它的理论文本,但我觉得我不能完全理解它。C\C++上下文中的一个小示例可能会有所帮助。多核处理器和多线程的特殊性是什么? 最佳答案 乱序执行是制造微处理器的工程师使用的一种技术。结果会影响微处理器执行机器指令的方式,我们通常使用“汇编语言”编写这些指令。重要的是要认识到乱序执行不是程序员实现的东西——它是微处理器上的一种机制。程序员可能会编写巧妙利用特定实现的汇编代码,但在后来的微处理器上编写的相同代码可能不会从这种聪明中受益,因为处理器关于乱序执行的设计可能不同

AWS Java SDK上下文类找不到

我正在尝试使用AWSJavaSDK开发Lambda功能,并遇到了一个绊脚石。示例参考com.amazonaws.services.lambda.runtime.Context课堂,但我无法在JavaSDK中的任何地方找到它。我什至下载了整个AWSJavaSDK源代码并运行$find.-name'Context.java'而且它没有结果。...这类班级是否已弃用,文档未更新?我完全缺少什么吗?我正在使用Maven来构建该项目,这是我的POM:4.0.0awstestAWSLambdaTest1.0-SNAPSHOTjarUTF-81.81.8com.amazonawsaws-java-sdk1.

c++ - 模板化上下文中的显式析构函数

我想在模板上下文中显式销毁一个vector。以下适用于我(GNUC++4.3、4.4和Clang++1.1):templatevoiddestroy_vector_owner(VectorOwner*obj){obj->v.~vector();//furthercleanupbyPythonAPIfunctionsomitted}虽然它在MacOSXv10.5的g++(i686-apple-darwin10-gcc-4.2.1)上失败了expectedclass-namebefore‘(’token如果我把它改成obj->v.~vector();代码无法用G++编译,但Clang仍然可

c++ - 如何在 native 事件中创建 OpenGL ES 2 上下文?

就我而言,我找不到任何适用于OpenGLES2的纯AndroidNDK示例。包含的native-activity示例项目构建了ES1上下文。是否有任何示例程序演示如何在纯C++中创建ES2上下文? 最佳答案 创建OpenGLES2上下文应该与创建OpenGLES1大致相同。基于NDK中的“native-activity”示例,您只需将其添加到传递给eglChooseConfig的属性列表中:constEGLintattribs[]={EGL_RENDERABLE_TYPE,EGL_OPENGL_ES2_BIT,...EGL_NONE

c++ - 非自愿上下文切换的原因

我正在尝试分析我在一台稍大的机器(32核,256GBRAM)上编写的多线程程序。我注意到在两次运行之间,程序的性能可能会有很大差异(70-80%)。我似乎无法找到程序性能中这种巨大差异的原因,但通过分析大量运行的“时间”实用程序的结果,我注意到非自愿上下文切换的数量与程序性能(显然,上下文切换越少,性能越好,反之亦然)。有什么好的方法可以确定是什么导致了这种上下文切换?如果我能找到罪魁祸首,那么也许我可以尝试解决问题。但是,我对可以使用的工具有一些特别的限制。首先,我在这台机器上没有root权限,所以任何需要这种权限的工具都被淘汰了。其次,它是一个相当老的内核(RHEL5,内核2.6.

c++ - 在 SDL 1.3 中创建 OpenGL 3.2/3.x 上下文

我遇到了SDL表示它不支持OpenGL3.x上下文的问题。我正在尝试按照本教程进行操作:CreatingaCrossPlatformOpenGL3.2ContextinSDL(C/SDL).在这种情况下,我使用的是GLEW,但我也无法让gl3.h使用它。这是我最终得到的代码:#include#includeintTesting::init(){if(SDL_Init(SDL_INIT_EVERYTHING)报告的唯一问题是在尝试调用SDL_GL_CreateContext(window)之后,SDL报告“不支持GL3.x”。然而,教程和这个samplepack(我没有费心去测试)报告成

c++ - 为什么不允许在非推导上下文中使用基类定义,以及如何解决这个问题?

我有以下代码:#includetemplatestructBase{usingType=int;};templatestructDerived:Base{//uncommmentingthebelowcausecompilererror//usingAlias=Type;};intmain(){Derived::Typeb=1;std::cout现在类型名Type可用于Derived如果它在推导的上下文中-如b的完全有效声明所示.但是,如果我尝试引用Type在Derived的声明中本身,然后我得到一个编译器错误,告诉我Type不命名类型(例如,如果Alias的定义未注释)。我想这与编译

c++ - STL 迭代器上下文中的奇异值和非奇异值是什么?

C++标准(2003)的第24.1/5节内容如下:Justasaregularpointertoanarrayguaranteesthatthereisapointervaluepointingpastthelastelementofthearray,soforanyiteratortypethereisaniteratorvaluethatpointspastthelastelementofacorrespondingcontainer.Thesevaluesarecalledpast-the-endvalues.Valuesofaniteratoriforwhichtheexpre

c++ - 将 openGL 上下文保存为视频输出

我目前正在尝试将openGL中制作的动画保存到视频文件中。我曾尝试使用openCV的videowriter但没有任何优势。我已经成功地能够使用SDL库生成快照并将其保存为bmp。如果我保存所有快照,然后使用ffmpeg生成视频,这就像收集4GB的图像。不实用。如何在渲染过程中直接写入视频帧?这是我在需要时用来拍摄快照的代码:voidsnapshot(){SDL_Surface*snap=SDL_CreateRGBSurface(SDL_SWSURFACE,WIDTH,HEIGHT,24,0x000000FF,0x0000FF00,0x00FF0000,0);char*pixels=ne