我有一个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)
如你所见,我不太确定互斥体的确切语法.所以总结一下,我的问题是
编辑:我意识到我在谈论线程,而不是进程.编辑:我参与构建可以在Linux和Windows上运行的应用程序...