其他分享
首页 > 其他分享> > c – 对象的ctor和dtor必须在同一个线程上吗?

c – 对象的ctor和dtor必须在同一个线程上吗?

作者:互联网

使用C RAII,当对象超出范围时,会调用dtor.多线程的机制总是涉及传递回调以在新线程上运行.因此,我认为对象不可能在一个线程中构造而在另一个线程中被破坏,因为那些对象必须是不同的范围.

我这是对的吗?或者是否存在可以在不同线程中调用对象ctor和dtor的情况?

解决方法:

Thus, I don’t think it’s possible for an object to be constructed in one thread and destructed in another, since those would have to be different scopes.

Am I right about this?

不能.可以完全独立于任何线程调用这些函数.

Or are there some cases where an objects ctor and dtor can be called in different threads?

当然有案例(只是每日面包和黄油).考虑一个简单的生产者/消费者模型和通过队列在线程之间交换的消息实例.

生产者线程创建消息实例并将其推入队列.使用者从队列中取出它,消息析构函数将在处理后被调用.

标签:raii,c,multithreading
来源: https://codeday.me/bug/20190823/1699789.html