我正在编写一个程序,其中有一个对象被多个线程共享:
- A)多个写线程向对象中写入数据(所有线程都运行相同的功能)
- B)一个读取线程每 5 秒钟访问该对象
- C)一个读取线程在有用户请求时访问该对象
很显然,在向对象中写入内容时需要对其进行锁定,因为我们不希望多个线程同时写入该对象。
我的问题是:
- 在从对象中读取内容时,是否也需要将其锁定?
- 如果我们只在写入时锁定对象,是否仅需要一个临界区即可;但是如果我们在读取或写入时锁定对象,是否需要一个互斥量?
我之所以提出这个问题,是因为在 Microsoft Office 中,两个 Word 实例不能以读/写模式访问同一个文档;但是在以读/写模式打开文档时,可以打开另一个 Word 实例以只读模式访问该文档。在多线程中是否也适用相同的逻辑?