相关疑难解决方法(0)

在被调用的函数中更改函数指针(std :: function)是否安全?

std::function指着一个函数.在这个函数内部,我将指针更改为另一个函数.

std::function<void()> fun;

void foo() {
    std::cout << "foo\n";
}

void bar() {
    std::cout << "bar\n";
    fun = foo;
}

int main() {
    fun = bar;
    fun();
    fun();
}
Run Code Online (Sandbox Code Playgroud)

我看不出任何问题,它工作正常(见这里),但我不确定这是否合法.有什么我想念的吗?也许在c ++标准草案中(我快速检查但到目前为止没有看到任何内容).

c++ c++11 std-function

14
推荐指数
1
解决办法
867
查看次数

在销毁对象时运行方法

几天前,我的朋友告诉我他们的项目情况.有人认为,破坏NotVerySafeClass并行线程的对象(如异步)会很好.它是在不久前实施的.现在它们崩溃了,因为在主线程中调用了一些方法,而对象被销毁了.创建了一些解决方法来处理这种情况.

当然,这只是一个不太好的解决方案的例子,但仍然是一个问题:

有没有办法在内部防止这种情况NotVerySafeClass(拒绝运行methods,如果destructor已经调用,并强制destructor等待,直到任何运行method结束(让我们假设只有一个method))?

c++ methods multithreading destructor

4
推荐指数
1
解决办法
3167
查看次数

标签 统计

c++ ×2

c++11 ×1

destructor ×1

methods ×1

multithreading ×1

std-function ×1