倒在这个面试题上,郁闷。。。。
有3个类,class A, class B(线程类), class C(线程类)
大概是这样的。
class B : public Thread
{
int i = 0;
while(i < 1000)
{
i++;
//这里需要把 i 传到A类去,不能用new A的方式,因为不能重复执行A类的构造函数。
}
}
class C : public Thread
{
int i = 0;
while(i < 1000)
{
i++;
//这里需要把 i 传到A类去,不能用new A的方式,因为不能重复执行A类的构造函数。
}
}
class A
{
public:
int fromB(int _bi);
int fromC(int _ci);
int Add(int bi, int _ci);
}
B类线程和C类线程同时执行,假定一种环境,B类里while循环是i为1的时候,传给A类,C类里while循环是i为1的时候,传给A类,那么这个时候A类里执行Add,就是把B类传过来的i和C类传过来的i相加,也就是等于2。
请问该如何实现?
引用来自“mental”的答案
看你的描述应该是要达到 1+1, 2+2,,, N+N 这样的效果。
如果是这样的话,这是生产者消费者问题, 两个生产者一个消费者。
B,C 传给 A 数据之后,一直阻塞,直到 A 的方法正常调用后,B,C 才能继续传数据给 A 。
A 得不到数据时也一直阻塞,当 B, C 只有一个或没有给 A 传数据时,调 A 则 A 一直阻塞到两个数据到达。