我在堆上有一个A
类型的非并发对象。我有一个共享的指针。我总是从同一线程使用该对象,直到我决定要从另一个线程使用它为止。 A
是不可复制且不可移动的。应用程序逻辑确保线程2的使用将在线程1的使用之后开始。我在线程#1上进行了很多操作,因此无法预见将要做出转移决定的工作量或确切时间。
我当前的想法是,在所有工作之后,我将在线程#1上acquire()
和release()
一个mutex
,然后在线程#2上使用相同的互斥量执行相同的操作在使用对象之前。从理论上讲,这将确保线程1上发生的所有事情在线程2上都是可见的,这样做的好处是,我知道只有线程1可以访问该对象,所以我不必使用互斥锁或同步。
这种方法够用吗?有没有更好的办法?这个任务有官方名称吗?
这是一个学术问题。