c_cpp 多线程QA.cpp

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 多线程QA.cpp相关的知识,希望对你有一定的参考价值。

ProduceItem(ItemRepository *ir, int item)
{
    std::unique_lock<std::mutex> lock(ir->mtx);
    while(((ir->write_position + 1) % kItemRepositorySize)
        == ir->read_position) { // item buffer is full, just wait here.
        std::cout << "Producer is waiting for an empty slot...\n";
        (ir->repo_not_full).wait(lock); // 生产者等待"产品库缓冲区不为满"这一条件发生.
    }

    (ir->item_buffer)[ir->write_position] = item; // 写入产品.
    (ir->write_position)++; // 写入位置后移.

    if (ir->write_position == kItemRepositorySize) // 写入位置若是在队列最后则重新设置为初始位置.
        ir->write_position = 0;

    (ir->repo_not_empty).notify_all(); // 通知消费者产品库不为空.
    lock.unlock(); // 解锁.
}

以上是关于c_cpp 多线程QA.cpp的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 多线程

c_cpp [测试]#C ++#多线程

c_cpp 使用evhttp的多线程HTTPServer

c_cpp 多线程应用程序,用于添加整数数组。

c_cpp 如何“多线程”Arduino(Protothreading教程) - 来自https://create.arduino.cc/projecthub/reanimationxp/how-to

c_cpp 在后台运行线程