gpt4 book ai didi

c++ - 为什么我在这个程序上得到 "abort"?

转载 作者:行者123 更新时间:2023-11-28 05:18:25 24 4
gpt4 key购买 nike

<分区>

让我们谈谈下一个代码示例:

#include <iostream>           // std::cout
#include <thread> // std::thread
#include <mutex> // std::mutex, std::unique_lock
#include <condition_variable> // std::condition_variable
#include <deque>

std::mutex mtx;
std::condition_variable cv;
bool ready = false;
std::deque<int> queue;



void Inserter()
{
int count = 10;
while (count >= 0)
{
std::unique_lock<std::mutex> lock(mtx);
queue.push_back(count);
--count;
lock.unlock();
}
}

void Consumer()
{
int count = 10, got;

while (count >= 0)
{
std::unique_lock<std::mutex> lock(mtx);
if (!queue.empty())
{
got = queue.back();
queue.pop_back();
std::cout << "We got: " << got << std::endl;
--count;
lock.unlock();
}
else
{
lock.unlock();
}
}
}

int main()
{
std::thread t1(Inserter);
std::thread t2(Consumer);

std::cin.get();
return 0;
}

当我运行这个程序时,我得到“中止”,但我不应该。我在这里看到中止的唯一原因是当我离开锁定锁而不打开它时 - 但没有任何理由让锁保持锁定状态,因为在我通过的每个循环之后我都会打开锁。

你认为原因是什么?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com