Wer*_*lik 4 c++ methods multithreading destructor
几天前,我的朋友告诉我他们的项目情况.有人认为,破坏NotVerySafeClass并行线程的对象(如异步)会很好.它是在不久前实施的.现在它们崩溃了,因为在主线程中调用了一些方法,而对象被销毁了.创建了一些解决方法来处理这种情况.
当然,这只是一个不太好的解决方案的例子,但仍然是一个问题:
有没有办法在内部防止这种情况NotVerySafeClass(拒绝运行methods,如果destructor已经调用,并强制destructor等待,直到任何运行method结束(让我们假设只有一个method))?
不,不,不.这是一个基本的设计问题,它在考虑多线程情况和一般竞争条件时表现出一种常见的误解.
有一两件事是可以发生的可能性相同,这是真的表明你需要一个所有权的概念:该函数调用线程可以调用函数的对象已被破坏刚过权,所以没有对象了,并尝试调用它上面的函数是UB,由于该对象不再存在,它也没有机会阻止dtor和成员函数之间的任何交互.
| 归档时间: |
|
| 查看次数: |
3167 次 |
| 最近记录: |