多线程访问函数并通过引用传递参数

发布于 2024-11-04 10:27:31 字数 155 浏览 0 评论 0原文

我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘿嘿嘿 2024-11-11 10:27:32

假设“数据集”指的是 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 or lock in C#) or some other synchronization technique.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文