【发布时间】:2011-04-13 00:13:24
【问题描述】:
我有一个我正在尝试制作多线程的应用程序。每个线程都会访问一大块只读数据。
如果多个线程同时访问数据可以吗?我知道如果数据不是只读的,我需要使用互斥锁或其他形式的同步来防止竞争条件。但我想知道是否可以读取数据而不考虑同步。
在所有个线程的持续时间内,相关数据不会被修改。该应用程序将在 Linux 和 Windows 上运行,并且使用 C++ 编写,如果这有什么不同的话。
【问题讨论】:
-
虽然已经给出了一般性答案,但我想添加一个警告。如果资源是数据库,请小心。见这里:stackoverflow.com/questions/13912489/…
-
也许关键问题是即使只读是线程安全的,性能是否会受到影响。假设 100 个线程正在从多个随机索引的 10000 个元素的向量中读取。
标签: c++ multithreading thread-safety readonly