c - 生产者/消费者解决方案

标签 c operating-system semaphore producer-consumer

我正在使用信号量实现生产者消费者问题的解决方案,并且到目前为止已经开发了这段代码,其中实现了生产者和消费者。

#define N 100               
typedef int semaphore;
semaphore mutex = 1;
semaphore empty = N;
semaphore full = 0;
void producer(void)
{
    int item;
    while (TRUE)
    {
        produce_item(&item);
        down(&empty);
        down(&mutex);
        enter_item(item);
        up(&mutex);
        up(&full);
    }
}
void consumer(void)
{
    int item;
    while (TRUE)
    {
        down(&full);
        down(&mutex);
        remove_item(&item);
        up(&mutex);
        up(&empty);
        consume_item(item);
    }
}

我正在努力思考如何实现每次生产/消费元素时打印数字的主程序。

如有任何帮助,我们将不胜感激

最佳答案

我建议在调用 enter_itemremove_item 后打印消息。这个问题最好使用线程来解决,但对于您的实现,请尝试生产“x”数量的项目(直到满),然后让消费者消费它们。

关于c - 生产者/消费者解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36670558/

相关文章:

c - 解锁然后立即锁定互斥锁/信号量。不好的做法还是有办法做到这一点?

c - 如果包含数字,如何使整个字符串大写?

php - PHP 开发人员的 Cocoa 技巧?

c - 如何验证函数 X() 是从函数 Y() 而不是从函数 Z() 调用的?

operating-system - 减少 CentOS 中的进程核心

linux - 为 Linux 发行版做贡献

c - 在c中使用pthreads,出于某种原因,每个pthread都有一个不同的锁实例

c++ - realloc 内存在 C++ 中无法正常工作

linux - 当操作系统等待用户输入时,CPU 是否仍在执行任何指令?

c 如何启动一个通过更改信号量值而停止的线程