在四核计算机上,我正在考虑C#/。NET算法的并行化,该算法涉及让多个线程同时读取小的int []数组。到目前为止,它似乎工作得还不错,但是我不确定在哪里指定在.NET中对数组的并发读取是否是线程安全的。有指针吗?
然后,我也想知道这种方法是否真的有效?在某些情况下,您最好实际为每个线程复制输入数据,以便不进行任何并发读取,并且每个数组(也许吗?)都有机会在亲和力CPU附近进行缓存?
对多核CPU的最佳实践有何想法?
最佳答案
在您的情况下,对数组的并发读取将是线程安全的。
至于算法的有效性,取决于阵列的大小,如果它适合高速缓存,那么您可能会看到出色的性能提升,因为多核有效地“争夺”了CPU中的高速缓存。如果他们正在努力用相同的信息填充缓存,那么他们将共享意味着更多的缓存命中率和更好的性能。
假设您的数组适合缓存...
关于.net - 对int []数组的并发读取访问: Is it safe?快速吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/556367/