多线程访问函数并通过引用传递参数
我在 vb.net 中并且有一个将被多个线程访问的函数。函数内部的所有内容都使用局部变量。但是,每个线程将通过引用传递自己的数据集。
根据我的阅读,局部变量应该没有问题,但我认为传入的数据集是一个问题。
我应该如何控制该函数的访问/执行以确保它是线程安全的?谢谢。
I am in vb.net and have a function that will be accessed by multiple threads. Everything inside the function uses local variables. However, each thread will pass in its own dataset by reference.
From what I have read the local variables should be no problem, but I think the dataset coming in is a concern.
How should I control access / execution of this function to make sure that it is thread safe? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设“数据集”指的是 System.Data.DataSet,如果您的函数仅从数据集中读取数据,那么在任何情况下都不需要同步,因为“这种类型对于多线程来说是安全的”读取操作”(来自 http://msdn.microsoft.com/ en-us/library/system.data.dataset.aspx)。
如果您要修改数据集,那么只要每个数据集是不同的实例,就应该没有问题。
如果您正在修改数据并且不同的线程可能传入对同一数据集的引用,则您需要使用
Monitor
(SyncLock
或 C# 中的lock
)或其他一些同步技术。Assuming that by 'dataset' you mean a
System.Data.DataSet
, if your function is only reading from the dataset, then you don't need synchronization in any case since "This type is safe for multithreaded read operations" (from http://msdn.microsoft.com/en-us/library/system.data.dataset.aspx).If you're modifying the dataset, then as long as each dataset is a different instance, there should be no problem.
If you're modifying the data and if different threads might pass in a reference to the same dataset, you'll need to synchronize access to the dataset using a
Monitor
(SyncLock
orlock
in C#) or some other synchronization technique.