草庐IT

CPU_Only

全部标签

.net - 如何根据 CPU 架构使用正确的非托管 DLL 文件? (32/64 位)

我必须使用来自ASP.NET站点的C++DLL文件。该站点将托管在32位和64位环境中。我有一个32位和64位版本的非托管DLL文件。如何根据当前服务器架构从正确的方法导入方法?就像有人发布的那样,这可以作为部署问题来处理。我担心的是:使用这个DLL文件的Web应用程序很大,而且我们没有部署文档。没有人会记得部署正确的DLL文件,所以我试图从解决方案中消除人为因素:) 最佳答案 最简单的方法是在两个不同的目录中为两个native库提供相同的文件名,然后adjustyourapplicationDLLsearchpath取决于位数。h

c++ - 在不消耗太多 CPU 周期且没有 sleep ()的情况下循环?

我正在做一个VoIP程序,它不断检查录音缓冲区中是否有任何内容(FMOD库,只要函数getRecordPosition>0,缓冲区中就有数据)。所以它会是这样的:while(true){if(getRecordPosition>0){processdata....}}然而,这会导致非常高的CPU使用率。一个版本是使用sleep()但如果可能我宁愿不使用它。例如,带有事件驱动循环的win32消息处理不会消耗很多cpu周期,这是我试图模仿的东西。同时我明白必须经常调用函数getRecordPosition()以查看返回值是否大于0。我是否坚持执行while(true)循环和sleep()一

c++ - 现代 CPU 内循环间接优化

来自http://www.boost.org/community/implementation_variations.html“...编码差异,例如将类从虚拟成员更改为非虚拟成员或删除间接级别,除非深入内部循环,否则不太可能产生任何可测量的差异。即使在内部循环中,现代CPU也经常执行此类在相同数量的时钟周期内竞争代码序列!”我试图理解“即使在内部循环”部分。具体来说,CPU实现了哪些机制来在相同数量的时钟周期内执行两个代码(虚拟与非虚拟或额外的间接级别)?我知道指令流水线和缓存,但是如何在与非虚拟调用相同的时钟周期数内执行虚拟调用?间接如何“丢失”? 最佳答

c++ - boost::asio 线程池与 io_service_per_cpu 设计

目前我不确定,我尝试制作一个高性能服务器,我有一个6核CPU,所以如果我使用“io_service_per_cpu”设计,我有6个io_service。我已经听说线程池设计不是最好的,但我不确定。你有什么知识?有人已经对每个进行了压力测试,还是其他? 最佳答案 根据我的经验,按照以下顺序进行异步应用程序设计要容易得多:单线程和单io_service多个线程,每个线程从单个io_service调用io_service::run()。使用strands用于需要访问共享数据结构的处理程序。io_service每个cpu在对您的应用程序进行

c++ - 在 C++ 中处理 CPU 异常

是否有跨平台的方法来处理CPU异常,例如段错误或被零除?比方说,我需要调用一些可能不安全的函数(例如从插件文件),这可能会导致段错误,或者我在执行之前无法测试的其他一些问题。我知道,C标准库有信号处理函数,但我不知道如何使用它们来处理问题以避免程序终止(我想,我不能只跳到有问题的函数执行之前的位置,或者我可以吗?)。在Windows下我可以使用SEH异常处理程序,但我不能在Linux或任何其他操作系统下这样做。使用我自己的异常处理程序来处理这些问题怎么样,Windows/Linux之间有多少不同?这甚至可能吗(通过汇编程序-让我们说只是在x86平台上)?我问这个问题主要是出于好奇,我还

c++ - 检查代码是运行在 GPU 上还是 CPU 上

有谁知道如何使用Cuda检查代码是在GPU还是CPU上运行?__device____host__doublecount_something(doublevariable){if(RUN_ON_GPU){use_cuda_variables();}else{use_cpu_variables();}} 最佳答案 没有办法运行时检查一段代码在哪个架构上运行,但也没有必要知道,因为它可以在编译时确定并相应地处理。nvcc定义了几个预处理器符号,可用于在编译代码时解析编译轨迹。关键符号是__CUDA_ARCH__,它在编译主机代码时从不定义

c++ - 在 C++ 中测量 CPU 时间

如果我有下面的代码clock_tt;t=clock();//algorithmt=clock()-t;t等于运行程序的滴答数。这与CPU时间相同吗?在C++中还有其他方法可以测量CPU时间吗?操作系统--DebianGNU/Linux我对任何有用的东西都持开放态度。我想比较两种算法的CPU时间。 最佳答案 clock()指定用于测量CPU时间,但并非所有实现都这样做。特别是Microsoft在VS中的实现不会在多个线程运行时计算额外时间,或者在程序线程休眠/等待时计算较少时间。另请注意,clock()应测量整个程序使用的CPU时间,

linux查看cpu与内存

查看cpu第一种方法:top命令法       1、首先执行top命令;       2、在top命令的显示界面,按数据键1,即可查看到当前系统中的总cpu数;第二种方法:通过proc文件系统,直接获取cpu总数量,具体执行如下命令:       #cat/proc/cpuinfo|grepprocessor查看内存1、执行free-h,显示内存单位2、执行free-mfree-m 以MB为单位,显示内存使用情况。free命令用来显示系统内存状态,包括系统物理内存、虚拟内存(swap交换分区)、共享内存和系统缓存的使用情况,其输出和top命令的内存部分非常相似。free-m命令输出列表中,第一

c++ - 在 Win32 上如何将线程移动到另一个 CPU 核心?

我想确保一个线程被移动到一个特定的CPU核心,并且永远不会被调度程序从它移动。有SetThreadAffinityMask()调用,但没有GetThreadAffinityMask()。我需要这个的原因是如果调度程序将该线程移动到另一个CPU,高分辨率计时器会变得困惑。 最佳答案 您可能应该只使用SetThreadAffinityMask并相信它正在工作。MSDN 关于c++-在Win32上如何将线程移动到另一个CPU核心?,我们在StackOverflow上找到一个类似的问题:

c++ - 从命令行构建 x64 C++ 项目说 : This operation should only take place on the UI thread

VisualStudio2013在构建时出现问题,显示错误信息如下:c:>devenv/builddebug/project(projectname)/projectconfig"debug|x64"(solutionName).sln1>ThisoperationshouldonlytakeplaceontheUIthread. 最佳答案 我刚刚在使用VisualStudio2015编译C++代码时遇到了这个问题(错误:此操作应该只发生在UI线程上)。最后追踪到编译失败的项目的.vcxproj.filters文件。该文件已从另一个