小编bob*_*obo的帖子

CPU密集型线程智慧

我想在一台机器上运行一批20个CPU密集型comps(基本上很长时间嵌套for循环).

这20个工作中的每一个都不与其他工作共享数据19.

如果机器有N个核心,那么我应该将这些工作中的N-1分开吗?还是N?或者我应该只启动所有20,并让Windows弄清楚如何安排它们?

windows cpu multithreading

4
推荐指数
1
解决办法
192
查看次数

使STL对象线程安全的标准方法?

我需要几个STL容器,线程安全.

基本上我以为我只需要为每个STL容器对象添加2个方法,

.lock()

.unlock()
Run Code Online (Sandbox Code Playgroud)

我也可以打破它

.lockForReading()
.unlockForReading()
.lockForWriting()
.unlockForWriting()
Run Code Online (Sandbox Code Playgroud)

可行的方法是可以接受任意数量的并行读取锁,但如果有写入锁,则会阻止读取和写入.

尝试锁定写入等待直到lockForReading信号量降为0.

有没有标准的方法来做到这一点?

我是如何计划做错的或短视的?

c++ multithreading stl thread-safety

4
推荐指数
2
解决办法
1362
查看次数

模板<typename T>中的T可以使用继承吗?

我想做这样的事情:

template <typename T:public Vertex> addTri( T v1, T v2, T v3 )
{
    // Take v1.pos, v2.pos, v3.pos and create a geometric repn..
    Triangle tri( v1.pos, v2.pos, v3.pos ) ; // all vertices will 
    // have to have a .pos member.

    // Create the vertex buffer..
    VertexBuffer<T> vb ...
}
Run Code Online (Sandbox Code Playgroud)

由于这不起作用,这是我的解决方法..

template <typename T> addTri( T v1, T v2, T v3 )
{        
    Vertex* p1 = (Vertex*)&v1 ;
    // This is a very "shut up C++, I know what …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates

4
推荐指数
1
解决办法
369
查看次数

应用程序无法正确启动(0xc0000013).单击"确定"关闭应用程序

在启动我的(以前的靴子)工作VS 2010项目时,我突然遇到了这个问题.

应用程序无法正确启动(0xc0000013).单击"确定"关闭应用程序.

调试输出:

`The program '[5940] myapp.exe: Native' has exited with code -1073741805 (0xc0000013).`
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2010 windows-7

4
推荐指数
1
解决办法
7496
查看次数

MSVC++"官方"任意精度库

我正在寻找一个特定于MSVC++的任意精度库.由于我不需要跨平台兼容性来处理我正在工作的东西,所以我宁愿不要把它弄得一团糟.

我试着看NTL,但在看到" 这些步骤与MSVC++ v6一起工作 " 这样的陈述时,我忍不住将它作为过时的精神埋葬.最新版本: 2009 08 14.

MPIR看起来很有前途(最新版本2011 06 14),这是我迄今为止发现的最好的东西.

有关从MSVC++(本机代码,而不是.NET)执行至少 128位浮点运算的任何建议吗?

visual-c++ arbitrary-precision

4
推荐指数
1
解决办法
1736
查看次数

如何判断 .cpp 文件在哪个项目中

我接手了一个解决方案中的 C++ 代码。那个解决方案包含许多项目。我编辑了一个 .cpp 文件,但无法归档它属于哪个项目,所以我不知道要构建哪个项目。构建整个解决方案需要很长时间。如何找出 .cpp 文件属于哪个项目?

c++ visual-studio

4
推荐指数
1
解决办法
2927
查看次数

打败编译器

我正在尝试使用英特尔内在函数来击败编译器优化代码.有时候我可以做到,有时我做不到.

我想问题是,为什么我有时会击败编译器,但有时候不是?我operator+=使用英特尔内在函数获得了0.006秒的时间(使用裸C++时为0.009),但operator+使用内在函数的时间为0.07秒,而裸C++仅为0.03秒.

#include <windows.h>
#include <stdio.h>
#include <intrin.h>

class Timer
{
  LARGE_INTEGER startTime ;
  double fFreq ;

public:
  Timer() {
    LARGE_INTEGER freq ;
    QueryPerformanceFrequency( &freq ) ;
    fFreq = (double)freq.QuadPart ;
    reset();
  }

  void reset() {   QueryPerformanceCounter( &startTime ) ;  }

  double getTime() {
    LARGE_INTEGER endTime ;
    QueryPerformanceCounter( &endTime ) ;
    return ( endTime.QuadPart - startTime.QuadPart ) / fFreq ; // as double
  }
} ;


inline float randFloat(){
  return (float)rand()/RAND_MAX ;
}



// …
Run Code Online (Sandbox Code Playgroud)

c++ intel intrinsics avx

4
推荐指数
1
解决办法
498
查看次数

使用C++ 11迭代语法时从STL列表中删除

可能重复:
在基于范围的for循环内擦除容器中的元素

与此类似,您可以在使用新for( auto item : list )语法迭代STL列表时从STL列表中删除吗?

这是一个完整的例子(崩溃!)

#include <list>
using namespace std ;

int main()
{
  list<int> li;
  li.push_back( 4 ) ;
  li.push_back( 5 ) ;
  li.push_back( 6 ) ;
  for( auto num : li )
  {
    if( num == 5 )
      li.remove( num ) ;
    else
      printf( "%d\n", num ) ;
  }
}
Run Code Online (Sandbox Code Playgroud)

c++ for-loop c++11

4
推荐指数
1
解决办法
935
查看次数

你如何获得AudioFileID的采样率?

在iOS中很容易获得加载的.wav文件中的字节数:

UInt64 dataSize = 0;  // dataSize
UInt32 ps = sizeof(UInt64); // property size
if( AudioFileGetProperty(fileId, kAudioFilePropertyAudioDataByteCount, &ps, &dataSize) )
  puts( "error retriving data chunk size" );
return dataSize ;
Run Code Online (Sandbox Code Playgroud)

但是在文档中我似乎无法找到有关如何确定PCM波形文件采样率的任何信息.

wav rate sampling ios

4
推荐指数
1
解决办法
775
查看次数

引用变量的声明需要初始化器

我已经将我的真实程序简化为一个玩具示例。

假设我有以下代码:

struct A
{
  A( string i ) { }
  A( string *i ) { }
};

int main()
{
  string s;
  A("HELLO"); // Works
  A(&s); // XCode: Declaration of reference variable 's' requires an initializer
  // Visual Studio: error C2040: 's': 'A &' differs in levels of indirection from 'std::string'
}
Run Code Online (Sandbox Code Playgroud)

我不明白错误消息。XCode“引用变量的声明需要初始化程序”是什么意思?为什么A("HELLO");有效而A(&s)无效?

c++

4
推荐指数
1
解决办法
4680
查看次数