例如,我有一个多线程应用程序,可以表示为:
Data bigData;
void thread1()
{
workOn(bigData);
}
void thread2()
{
workOn(bigData);
}
void thread3()
{
workOn(bigData);
}
很少有线程在处理数据。我可以保持原样,但问题是有时(很少)数据会被 thread4 修改。
void thread4()
{
sometimesModifyData(bigData);
}
可以在此处添加关键部分,但对多线程没有意义,因为只有一个线程可以同时处理数据。
在使其线程安全的同时使其感知多线程的最佳方法是什么?
我正在考虑一种状态(sempahore?),它会阻止同时读取和写入,但会允许并行读取。