要求生产者和消费者为对象
时间: 2024-10-19 19:09:07 浏览: 0
在面向对象编程中,将生产者和消费者设计成独立的对象可以使它们更具可复用性和封装性。我们可以创建两个类,一个代表生产者(Producer),另一个代表消费者(Consumer)。每个类包含各自的方法和状态,以管理它们的行为和数据。
例如,生产者类可能会有生成数字和放入缓冲区的方法,消费者类则会有从缓冲区取出数字并检查其是否为素数的方法。下面是一个简单的C++示例:
**生产者类(Producer)**:
```cpp
class Producer {
private:
std::queue<int> buffer;
size_t itemCount;
public:
Producer(size_t initialItemCount) : itemCount(initialItemCount) {}
void generateNumbers() {
for (size_t i = 0; i < itemCount; ++i) {
int randomNum = ...; // 生成随机数
buffer.push(randomNum);
// 模拟生产过程
}
}
void produce(int itemCountAdditional) {
if (itemCountRemaining(itemCount)) {
itemCount += itemCountAdditional;
generateNumbers();
}
}
size_t itemCountRemaining() const {
return itemCount - buffer.size();
}
};
```
**消费者类(Consumer)**:
```cpp
class Consumer {
private:
std::queue<int> buffer;
public:
void checkPrimes() {
while (!buffer.empty()) {
int num = buffer.front();
if (isPrime(num))
processPrime(num);
else
processNonPrime(num);
buffer.pop();
}
}
private:
void processPrime(int prime) {
// 处理素数逻辑...
}
void processNonPrime(int nonPrime) {
// 处理非素数逻辑...
}
};
// 使用方法:
Producer producer(1000000);
Consumer consumer;
producer.produce(500000); // 添加额外生产
consumer.checkPrimes(); // 检查生成的数字
```
阅读全文