我有一个线程服务器应用程序,存储List<Item> dataList
。有一个写入线程可以修改,添加和删除列表中的项目,以及从该列表读取的多个线程。这段代码需要什么样的同步?
需要什么样的同步来确保写操作按照被调用的顺序发生,并为读操作提供最大性能,即如果写操作繁忙,读操作必须在读操作前提供先前的值。
我目前使用ReaderWriterLockSlim
是因为它具有独立的读写锁定功能,但感觉好像有很多昂贵的开销调用ReadLocks是不必要的,因为我想要的只是为了保证写入顺序?
据我了解,阅读引用类型和值类型应提供原子访问,所以锁定可能没有必要?
性能是一个大问题,它似乎像我同步结构可以通过颇有几分改进的优化。
访问经由直接的方法的项属性不大于使用间接指针不同。同样的事情,生产者线程仍然可以改变项目的属性。 –