我正在编写一个程序,其中有一个由多个线程共享的对象:
- A)多个写线程写入对象(都运行相同的功能)
- B) 每 5 秒访问一次对象的读取线程
- C)访问对象的读取线程有用户请求
在写入对象时显然需要锁定对象,因为我们不希望多个线程同时写入对象。
我的问题是:
- 读取对象时是否也需要锁定对象?
- 我是否正确地认为,如果我们只是在编写时锁定对象,一个关键部分就足够了;但是如果我们在读或写的时候锁定对象,互斥量是必要的吗?
我问这个问题是因为在 Microsoft Office 中,两个 Word 实例无法以读/写访问模式访问文档;但是当文档以读/写模式打开时,可以打开另一个 Word 实例以只读模式访问文档。相同的逻辑是否适用于线程?