我有一个应用程序有几个处理级别,如:
InputStream->Pre-Processing->computation->OutputStream
每个实体都在单独的线程中运行.
所以在我的代码中我有一般的线程,它拥有
std::vector<ImageRead> m_readImages;
然后它将此成员变量传递给每个线程:
InputStream input{&m_readImages}; std::thread threadStream{&InputStream::start,&InputStream}; PreProcess pre{&m_readImages}; std::thread preStream{&PreProcess::start,&PreProcess}; ...
并且每个类都拥有此数据的指针成员:
std::vector<ImageRead>* m_ptrReadImages;
我还定义了一个全局互斥锁,我在对该共享容器的每次读/写操作时锁定和解锁.
困扰我的是这种机制非常模糊,有时我会混淆数据是否被另一个线程使用.