小编Naz*_*zka的帖子

多线程与多处理

我是这种编程的新手,需要你的观点.

我必须构建一个应用程序,但我无法让它足够快地进行计算.我已经尝试过英特尔TBB,它很容易使用,但我从未使用过其他库.

在多处理器编程中,我正在阅读有关多线程的OpenMP和Boost,但我不知道它们的优缺点.

在C++中,与多处理器编程相比,何时多线程编程是有利的,反之亦然?哪个最适合于繁重的计算或启动许多任务......?当我们构建使用它们设计的应用程序时,它们的优缺点是什么?最后,哪个库最适合使用?

c++ parallel-processing multithreading multiprocessing

30
推荐指数
3
解决办法
5万
查看次数

如何在带有strtk的列表中使用"自定义split()"?

我已经阅读了http://www.codeproject.com/KB/recipes/Tokenizer.aspx,我希望在我的主要内容中有最后一个示例(最后,在所有图表之前)"扩展分隔符谓词",但是我当我将token_list分配给向量时,不会获得与文章作者相同的输出标记,为什么?

如何将真实结果放入列表或向量中?我想要这个:

  • list0 abc
  • list1 123,mno xyz
  • list2 i \,jk

但我有类似的东西:

  • list0 abc;"123,mno xyz",i \,jk
  • list1 123,mno xyz",i \,jk
  • list2 i \,jk

来源样本:

class extended_predicate
{
public:

   extended_predicate(const std::string& delimiters)
   : escape_(false),
     in_bracket_range_(false),
     mdp_(delimiters)
   {}

   inline bool operator()(const unsigned char c) const
   {
      if (escape_)
      {
         escape_ = false;
         return false;
      }
      else if ('\\' == c)
      {
         escape_ = true;
         return false;
      }
      else if ('"' == c)
      {
         in_bracket_range_ = !in_bracket_range_;
         return true;
      }
      else if …
Run Code Online (Sandbox Code Playgroud)

c++ split tokenize

18
推荐指数
1
解决办法
631
查看次数

使用C++的WPF,有可能吗?

我有我的C++主程序,但现在我需要构建一个漂亮的应用程序,我知道WPF很容易,并且可以制作漂亮的应用程序.WPF可以使用C++或C#和C++吗?(如果是,怎么样?)WPF对我来说是最好的吗?

c# c++ wpf user-interface

11
推荐指数
2
解决办法
8785
查看次数

带C#interop问题的C++/CLI Dll

我在一个解决方案中有3个项目.

我有 :

  • 本机C++ DLL,
  • 一个C#Winform,
  • 和没有纯模式的代理C++/CLI来完成另外两个项目之间的链接(并在C#中使用托管代码中的本机函数)

所以,当我启动应用程序时,所有工作.但是当我在我的winform中按下"Generer"按钮时,执行C++/CLI 的函数NativeMethod :: Test()它崩溃了,我有这个弹出消息:

System.Windows.Forms.dll中发生未处理的"System.BadImageFormatException"类型异常

附加信息:无法加载文件或程序集"EngineInterfaceWrapper.dll"或其依赖项之一.n'est pas une application Win32 valide.(HRESULT异常:0x800700C1)

当我进入Conf的项目礼仪时.属性 - >链接器 - >高级:目标机器,它为我的C++本机和托管DLL设置了值"MachineX86",我的WinForm也在X86中.我厌倦了许多配置,但它不起作用.

编辑:

问题可能是C++/CLI标题中的标题"TradeEngine.h":EngineInterfaceWrapper.h.因为当我取消链接原生C++ Dll(并删除CLI包装器中的所有代码)时,如果我构建解决方案,它将起作用但如果"#include"TradeEngine.h""总是在CLI标题中,我会有同样的错误.你有什么想法吗?

编辑: - 已解决 -

我终于找到了问题.它是我的本机C++ .h中调用的boost库.由于包装器需要具有本机头,它还链接Boost库(即使在代码中使用我的pragma,这很奇怪)和Boost在托管代码中调用时会产生许多问题,所以我将头文件放在本机.h原生.cpp和所有作品.谢谢大家的帮助.

代码:

原生C++

TradeEngine.h

#ifdef TRADEENGINE_EXPORTS
#define SYMBOL_DECLSPEC __declspec(dllexport)
#define SYMBOL_DEF
#else
#define SYMBOL_DECLSPEC __declspec(dllimport)
#define SYMBOL_DEF      __declspec(dllimport)
#endif

#pragma managed(push, off)
#include <curl/curl.h>
#include <boost\filesystem.hpp>

#include <boost\tokenizer.hpp>
#include <boost\lexical_cast.hpp>
#include <boost\thread.hpp>
#pragma managed(pop)

EXTERN_C SYMBOL_DECLSPEC void __stdcall Test(void);
Run Code Online (Sandbox Code Playgroud)

TradeEngine.cpp

SYMBOL_DECLSPEC void __stdcall Test(void)
{
} …
Run Code Online (Sandbox Code Playgroud)

c# dll interop c++-cli visual-c++

5
推荐指数
2
解决办法
5555
查看次数

如何清除streamtring的缓冲区?

我有一个两个循环的流串,它正在烧我的RAM.那么如何正确清除steamstring的缓冲区呢?这就是简化:

stringstream ss (stringstream::in | stringstream::out);

for()
{
    for()
    {
        val = 2;
        ss << 2;
        mystring = ss.str();
        // my stuff
    }
    // Clear the buffer here
}
Run Code Online (Sandbox Code Playgroud)

它写了2然后22然后222 ...我试过.clear()或.flush()但它不是那样的.那我怎么做?

c++ string buffer clear visual-studio

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