我在vb.net中,并且有一个可以被多个线程访问的函数。函数内的所有内容都使用局部变量。但是,每个线程都将通过引用传递其自己的数据集。
从我所看到的地方变量应该没问题,但我认为进入的数据集是一个问题。
我应该如何控制此函数的访问/执行以确保它是线程安全的?感谢。
答案 0 :(得分:2)
假设'dataset'表示System.Data.DataSet
,如果您的函数只是从数据集中读取,那么在任何情况下都不需要同步,因为“此类型对于多线程读取操作是安全的”(来自http://msdn.microsoft.com/en-us/library/system.data.dataset.aspx)。
如果您正在修改数据集,那么只要每个数据集都是不同的实例,就应该没有问题。
如果您正在修改数据,并且如果不同的线程可能会传入对同一数据集的引用,则您需要使用Monitor
(SyncLock
或{{来同步对数据集的访问权限1}}在C#)或其他一些同步技术。