Redim保留线程安全吗?

时间:2013-09-27 22:55:36

标签: vb.net thread-safety

我正在使用Task.Run()运行多个任务。我的每个任务都需要编辑一个多维数组... aka ...

Dim BigArray(3)() as integer

所以每个线程都需要做一些Redim Preserve,但是他们将调整数组的第二维。每个线程基本上都会重新调整它们自己的数组部分...例如......

Thread 1 will: Redim Preserve BigArray(0)(50)
Thread 2 will: Redim PReserve BigArray(1)(50)
Thread 3 will: Redim Preserve BigArray(2)(50)

安全吗?如果两个线程同时重新调整会发生什么?谢谢!

1 个答案:

答案 0 :(得分:1)

Redim将读取当前数组引用,进行一些处理并分配新的数组引用。这个get-set循环不是线程安全的。由于x = x + 1不是线程安全的原因,它是不安全的。