0
我在C小白++,並有一個類(mystack),有一個在它的方法(推),它可以使用如何在不同的線程中調用同一類的多個對象的方法?
mystack a;
a.push();
現在我已經創造了A類的多個實例調用,併爲他們每個人我想調用push方法,我想知道如何在不同的線程中調用它們,謝謝。
編輯
完整的代碼如下(這是很長,但很簡單明瞭),有類mystack的兩個實例,他們每個人提方法調用的順序,我要讓方法在不同的線程中調用不同的實例,所以我想在一個線程中執行實例stc的push和pop操作,並且在另一個線程中執行stc2中的相同操作,那麼我將如何實現這一點?
#include "stdafx.h"
#include <string>
#include <iostream>
#include <thread>
#include <vector>
#include <mutex>
using namespace std;
//static recursive_mutex mtx;
struct mystack
{
int *p;
unsigned int limit, counter;
public:
unsigned int max()
{
return limit;
}
~mystack()
{
delete p;
}
mystack(int k) : limit(k), p(0), counter(0)
{
if (limit > 0)
{
p = new int[limit];
}
}
void push(unsigned int k)
{
if (counter >= limit)
{
throw 1;
}
p[counter] = k;
counter++;
}
int pop()
{
if (counter <= 0)
{
throw 1;
}
counter--;
return p[counter];
}
};
int main(int, char*[])
{
mystack stc(5);
try
{
stc.push(1);
stc.push(2);
stc.push(3);
stc.push(4);
stc.push(5);
stc.push(6);
}
catch (int i)
{
try
{
cout << "pop out the values" << endl;
while (true)
{
cout << stc.pop() << " ";
}
}
catch (int j)
{
cout << endl;
cout << "stack is now empty" << endl;
cout << endl;
}
}
mystack stc2(3);
try
{
stc2.push(1);
stc2.push(2);
stc2.push(3);
stc2.push(4);
stc2.push(5);
stc2.push(6);
}
catch (int i)
{
try
{
cout << "pop out the values" << endl;
while (true)
{
cout << stc2.pop() << " ";
}
}
catch (int j)
{
cout << endl;
cout << "stack is now empty" << endl;
cout << endl;
}
}
return 0;
}
非常感謝你! – photosynthesis 2014-12-06 04:17:00