gpt4 book ai didi

c# - 在对象的实例上为同一方法创建多个线程

转载 作者:太空狗 更新时间:2023-10-29 20:51:46 27 4
gpt4 key购买 nike

我有一个问题。如果我有一个带有方法 DoSomething() 的对象,如果我为该方法创建多个线程,它是否可行且有效?它是否可以作为一个单独的线程运行?

例如

public class SomeClass
{
public void DoSomething()
{
//somethings done here
}
}

public class MainProgram
{
public MainProgram()
{
InitializeComponents();
}

protected override OnStart(string[] args)
{
SomeClass sc = new SomeClass();
Thread workerOne = new Thread(() => sc.DoSomething());
workerOne.Start();

Thread workerTwo = new Thread(() => sc.DoSomething());
workerTwo.Start(); //start a new thread calling same method
}
}

我希望这能解释我的意思。这会起作用还是会引起任何问题?

我正在编写一个几乎需要成为实时软件的程序,我目前正在决定初始化 SomeClass 的新实例是否更好?

希望有人能回答。如果我的问题没有意义,请发表评论,我会进一步解释!

谢谢,

Base33

PS 代码是专门为这个例子写的:)

最佳答案

每个线程都有一个单独的调用堆栈,所以是的它们可以在同一个对象上使用相同的方法。事实上,如果需要,每个线程都可以(通过递归)在同一实例上调用同一方法多次,如果您确实需要的话。

但是,可能会让您感到困惑的是,如果您在该对象中使用状态(实例或静态字段等,以及来自 那个状态)。您将需要确保您对任何共享状态的访问充分考虑(并且可能是同步)多线程访问。

关于c# - 在对象的实例上为同一方法创建多个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com