我在别人编写的项目中的很多地方都遇到过这样的代码,但我仍然很困惑为什么有人会编写这样的代码。
考虑下面的代码(此代码在C#中,但是我认为它也适用于许多语言-可能只是语法或类名以及执行方式的不同-您明白了。):
Thread thread;
thread = new Thread(new ThreadStart(method));
thread.Start();
thread.Join();
据我了解,这段代码意味着启动一个线程并运行
method
,然后该线程在不做任何其他事情的情况下等待新启动的线程完成。如果是这样,为什么我不只是直接调用该方法,即
method()
谁能向我解释我的理解是否正确?第一个代码片段的功能是否与第二个相同?
最佳答案
通常,您是对的,这不是一件非常有用的事情。
但是有时候,您可能希望某个操作在单独的线程上运行,因为它会修改或依赖于每个线程的状态。
该函数可能摆弄了线程本地数据,或者可能调出了 native COM代码,并且COM的线程单元内容是在每个线程的基础上初始化的,因此,为避免受到调用代码更改的影响,您可以只是想剥离一个新线程来调用该函数。
当然,在这种情况下,用一个小小的代码注释来解释为什么这样做似乎毫无用处,这可能是一个好主意。 ;)
关于c# - Thread.start紧随其后的是Thread.join-它有用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13344549/