在网上翻了一个任意参数打印的例子
void print() {}
template<typename Type, typename... Types>
void print(const Type& arg, const Types&... args)
{
std::cout << arg << std::endl;
print(args...);
}
但是我想在里面加互斥量
即
void print() {}
template<typename Type, typename... Types>
void print(const Type& arg, const Types&... args)
{
std::lock_guard<std::mutex> lock(m_mut);
std::cout << arg << std::endl;
print(args...);
}
但是会马上报错
请问应该怎么做才对
你这个递归调用死锁了(多次对m_mut加锁)
把std::mutex替换成std::recursive_mutex即可
应该怎么做:描述清楚,编译报错还是运行报错,把报错信息放出来
(m_mut)要先创建互斥量,然后再调用,希望可以帮到你,有疑问可以继续交流