c ++:将对象从一个线程转移到另一个线程

时间:2018-10-19 14:16:46

标签: c++ multithreading

我在堆上有一个A类型的非并发对象。我有一个共享的指针。我总是从同一线程使用该对象,直到我决定要从另一个线程使用它为止。 A是不可复制且不可移动的。应用程序逻辑确保线程2的使用将在线程1的使用之后开始。我在线程#1上进行了很多操作,因此无法预见将要做出转移决定的工作量或确切时间。

我当前的想法是,在所有工作之后,我将在线程#1上acquire()release()一个mutex,然后在线程#2上使用相同的互斥量执行相同的操作在使用对象之前。从理论上讲,这将确保线程1上发生的所有事情在线程2上都是可见的,这样做的好处是,我知道只有线程1可以访问该对象,所以我不必使用互斥锁或同步。

这种方法够用吗?有没有更好的办法?这个任务有官方名称吗?

这是一个学术问题。

0 个答案:

没有答案