在线程程序中使用锁定机制是否等效于同步执行代码,而不是异步执行代码?

你好,世界

下面的示例代码使用锁定的概念。但这阻止了它提供并行执行。那么问题的标题是否正确:在Threading程序中使用锁定机制是否等同于同步而不是异步执行代码?

相同情况是否适用于Threading.Monitor和具有[Synchronization]属性的声明类?

static void Main(string[] args) 
{    
    Console.WriteLine("*****Synchronizing Threads *****\n");  
    Printer p = new Printer();  
    // Make 10 threads that are all pointing to the same    
    // method on the same object.    
    Thread[] threads = new Thread[10]; 
    for (int i = 0; i < 10; i++)    
    {      
        threads[i] = new Thread(new ThreadStart(p.PrintNumbers));  
        threads[i].Name = string.Format("Worker thread #{0}", i);    
    }  
    // Now start each one.   
    foreach (Thread t in threads)  
    t.Start();   
    Console.ReadLine();
} 

public void PrintNumbers() 
{   
    // Use the private object lock token.  
    lock (threadLock)  
    {    
        // Display Thread info.
        Console.WriteLine("-> {0} is executing PrintNumbers()",Thread.CurrentThread.Name);  
        // Print out numbers.    
        Console.Write("Your numbers: "); 
        for (int i = 0; i < 10; i++)  
        {      
            Random r = new Random();   
            Thread.Sleep(1000 * r.Next(5));  
            Console.Write("{0}, ", i);    
        }     
        Console.WriteLine();  
    }
}
尤瓦尔·伊茨恰科夫(Yuval Itzchakov)

在线程程序中使用锁定机制是否等效于同步执行代码,而不是异步执行代码?

特别是在您的示例中,您将整个方法调用与一个锁包装在一起,因此您将体验到同步行为,在这种情况下,线程化将是无用的,并且会提供比获得收益更多的开销。

很多时候,您有特定的位置在访问共享状态时需要锁定,而这通常是并行性的限制所在。但是,如果您有大量可以并行执行的CPU工作,您仍可能会获得计算上的好处。

附带说明一下,异步和并行处理之间是有区别的。我建议您阅读这篇文章,以更多地了解两者的含义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在线程程序中使用锁定机制是否等同于同步执行代码,而不是异步执行代码?

来自分类Dev

该代码是否异步执行?

来自分类Dev

如何同步执行异步代码 Angular 5

来自分类Dev

Scala期货如何在线程上运行?以及如何将它们用于执行异步和非阻塞代码?

来自分类Dev

工作共享机制(在OpenMP中)是否在线程正在执行时在线程之间传输任务?

来自分类Dev

实际以异步/等待模式“多线程”执行的代码是什么?

来自分类Dev

如何异步执行代码而不创建新线程

来自分类Dev

Swift中的同步代码执行

来自分类Dev

在nodeJS中使用异步模块进行涉及for循环的同步执行?

来自分类Dev

停止异步执行代码js

来自分类Dev

异步等待代码执行异常

来自分类Dev

停止异步执行代码js

来自分类Dev

异步等待,代码永不执行

来自分类Dev

即使在完成处理程序中,Swift代码也将异步执行

来自分类Dev

使用同步顺序执行线程

来自分类常见问题

是否使用-m选项执行Python代码

来自分类Dev

执行锁定的代码应该比未锁定的代码花费更多的时间

来自分类Dev

是否应在非EDT线程上执行非SWING代码?

来自分类Dev

Python线程是否可能导致其父/主进程执行代码?

来自分类Dev

是否可以从UI停止代码的单线程执行?

来自分类Dev

在 C# 中使用线程异步执行语句

来自分类Dev

是否可以在 Node.js 中运行等效的单独线程来自动定期执行异步任务?

来自分类Dev

是否可以在Express应用中使用return语句停止执行异步路由处理程序?

来自分类Dev

意外的代码打印而不是执行

来自分类Dev

代码文本出现而不是执行

来自分类Dev

如何从Perl程序执行python代码并使用python代码的输出

来自分类Dev

在多线程代码中使用F#事件和异步

来自分类Dev

尝试单步执行代码时gdbserver锁定

来自分类Dev

尝试单步执行代码时gdbserver锁定

Related 相关文章

  1. 1

    在线程程序中使用锁定机制是否等同于同步执行代码,而不是异步执行代码?

  2. 2

    该代码是否异步执行?

  3. 3

    如何同步执行异步代码 Angular 5

  4. 4

    Scala期货如何在线程上运行?以及如何将它们用于执行异步和非阻塞代码?

  5. 5

    工作共享机制(在OpenMP中)是否在线程正在执行时在线程之间传输任务?

  6. 6

    实际以异步/等待模式“多线程”执行的代码是什么?

  7. 7

    如何异步执行代码而不创建新线程

  8. 8

    Swift中的同步代码执行

  9. 9

    在nodeJS中使用异步模块进行涉及for循环的同步执行?

  10. 10

    停止异步执行代码js

  11. 11

    异步等待代码执行异常

  12. 12

    停止异步执行代码js

  13. 13

    异步等待,代码永不执行

  14. 14

    即使在完成处理程序中,Swift代码也将异步执行

  15. 15

    使用同步顺序执行线程

  16. 16

    是否使用-m选项执行Python代码

  17. 17

    执行锁定的代码应该比未锁定的代码花费更多的时间

  18. 18

    是否应在非EDT线程上执行非SWING代码?

  19. 19

    Python线程是否可能导致其父/主进程执行代码?

  20. 20

    是否可以从UI停止代码的单线程执行?

  21. 21

    在 C# 中使用线程异步执行语句

  22. 22

    是否可以在 Node.js 中运行等效的单独线程来自动定期执行异步任务?

  23. 23

    是否可以在Express应用中使用return语句停止执行异步路由处理程序?

  24. 24

    意外的代码打印而不是执行

  25. 25

    代码文本出现而不是执行

  26. 26

    如何从Perl程序执行python代码并使用python代码的输出

  27. 27

    在多线程代码中使用F#事件和异步

  28. 28

    尝试单步执行代码时gdbserver锁定

  29. 29

    尝试单步执行代码时gdbserver锁定

热门标签

归档