c++ - 需要 Scopeguard 生命周期/模式

标签 c++ multithreading design-patterns

<分区>

Possible Duplicate:
prohibiting instantiation as a temporary object (C++)

我像这样使用 Scopeguard 进行锁定(简化):

{
ScopeGuard sg(mutex);
// ...critical code
}

我不小心在某个地方打字了

{
ScopeGuard(mutex);
// ...critical code
}

这是有效的代码,但不会将 ScopeGuard 对象的生命周期延长到语句之后。

问题:如果我像第二个示例那样创建一个临时的 ScopeGuard 对象,是否有任何模式会导致编译器错误或警告?

最佳答案

我会利用预处理器定义一个 lock 伪关键字,如下所述:http://www.curly-brace.com/lock.html

关于c++ - 需要 Scopeguard 生命周期/模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4691840/

相关文章:

c++ - 确定未在 Fortran 子例程顶部声明的变量类型

c++ - 如何在 ubuntu 20.04 中预编译 <bits/stdc++.h> 头文件?

c++ - 仅对 `iluInit' 的 undefined reference

c++ - 在不加入的情况下启动多个线程

c++ - std::async 究竟是如何执行的?

c# - 为 "character"设计一种干净/灵活的方式来在角色扮演游戏中施放不同的法术

c++ - 将类作为参数传递,但仍使用点运算符?

c++ - 对齐int的多线程读写

javascript - 用原型(prototype)继承覆盖方法

c++ - 具有不同通知的观察者模式