【问题标题】:Whats the difference between these two practices:这两种做法有什么区别:
【发布时间】:2017-05-11 08:23:22
【问题描述】:

我是多线程的新手,我正在关注 Albahari Joe 写的一本书并观看 Pluralsight 的课程,但是当我想了解更多关于线程以及如何正确、安全和有效地使用线程时,我经常遇到困难他们。我在这里搜索了解决方案,但找不到。所以请不要激怒我的基本问题!任何帮助,将不胜感激。提前致谢。

new Thread(Work).Start();     
OR
Thread t = new Thread(WriteB); t.Start();

【问题讨论】:

    标签: c# multithreading thread-safety


    【解决方案1】:

    唯一的区别是,使用第二行,您仍然可以通过变量t 访问新的Thread 实例。

    例如,如果您想等待线程完成,您可以使用:

    Thread t = new Thread(WriteB); 
    t.Start();
    // ... do work while the other thread also does work ...
    t.Join();
    

    如果不将 Thread 分配给变量,您将无法做到这一点。

    【讨论】:

    • c# 看起来很像 Java :) 除了方法名称中的大写字母。
    • 感谢考虑,但我没有完全理解。
    • 这是什么意思 // ... do work while the other thread also does work ... 我可以创建新线程并调用它们还是可以用主线程做点什么?
    • 你可以在那里做任何你想做的事。这个想法是你仍然可以访问Thread 实例之后你已经启动它,而如果你使用new Thread(...).Start() 你将无法再访问它。您在此处看到的所有代码都将在“主”线程上运行,而WriteB 方法将在新创建的线程上运行。
    • 是的,谢谢,解释得很好。而第一个sn-p中的那个work方法也会在另一个线程中运行。
    猜你喜欢
    • 2013-09-08
    • 2019-03-31
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多