相关疑难解决方法(0)

如何限制C++中正在运行的实例数量

我有一个c ++类,分配了大量的内存.它通过调用第三方库来实现这一点,如果它无法分配内存,则会崩溃,有时我的应用程序会在并行线程中创建我的类的多个实例.由于线程太多,我遇到了崩溃.我最好的解决方案是确保从不会有超过三个实例同时运行.(这是一个好主意吗?)和我为实现当前最好的办法是使用升压互斥.以下伪代码的行,

MyClass::MyClass(){
  my_thread_number = -1; //this is a class variable
  while (my_thread_number == -1)
    for (int i=0; i < MAX_PROCESSES; i++)
      if(try_lock a mutex named i){
        my_thread_number = i;
        break;
      }
  //Now I know that my thread has mutex number i and it is allowed to run
}

MyClass::~MyClass(){
    release mutex named my_thread_number
}
Run Code Online (Sandbox Code Playgroud)

如你所见,我不太确定互斥体的确切语法.所以总结一下,我的问题是

  1. 当我想通过限制线程数来解决内存错误时,我是否在正确的轨道上?
  2. 如果是,我应该使用互斥或​​其他方式吗?
  3. 如果是,我的算法是否合理?
  4. 有一个很好的例子,如何使用try_lock与boost互斥量?

编辑:我意识到我在谈论线程,而不是进程.编辑:我参与构建可以在Linux和Windows上运行的应用程序...

c++ boost boost-mutex

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

标签 统计

boost ×1

boost-mutex ×1

c++ ×1